2013-07-16 46 views
0

我有一个Rails 3应用程序,并且正在编写“管理”部分,我希望将其包含在许多不同模型的视图中。部分将包含足够的资源链接(例如新建,索引,显示),但如果资源的路由(如索引)在routes.rb中被禁用,我的设计将失败。确定Rails资源控制器是否已启用动作

样品视图(视图/ my_resources/show.html.erb):

<% provide(:title, 'My Resource') %> 

<div style="float:right;"> 
    <%= render '/shared/resource_menu' %> 
</div> 

<h1>My Resource</h1> 
<%= @my_resource.name %> 

从/shared/_resource_menu.html.erb摘录:

<div class="submenu"> 
<b><%= File.basename(params[:controller]).pluralize.titleize %></b><br /> 
<% if params[:action] != 'index' %> 
    <%= link_to 'Index', url_for(:controller => params[:controller], :action => 'index', :only_path => true) %><br /> 
<% end %> 
<% if params[:action] != 'new' %> 
    <%= link_to 'New', url_for(:controller => params[:controller], :action => 'new', :only_path => true) %><br /> 
<% end %> 
</div> 

目前,我已经被黑它使每个有条件的样子:

<% if params[:action] != 'index' && [email protected]_index_in_resource_menu %> 

,我用手设置@omit_index_in_resource_menu在相关的控制器,但比我想要的更笨重。

我可以代替做一些更优雅,如:

<% if params[:action] != 'index' && controller.actions.include?('index') %> 

回答

1

也许这会帮助你:

UsersController.action_methods(这是一个类的方法)

UsersController.new.available_action? :index(这是一个实例方法)

更多信息:http://api.rubyonrails.org/classes/AbstractController/Base.html#method-i-action_methods

+0

完美。正是我需要的。我需要更好地搜索API ... – LikeMaBell

+0

您也可以在控制台中使用自动完成来有时查找您的API,或者调用对象上的“方法”。当你在寻找某些东西时,这是一个很好的起点。干杯:) – Benj

相关问题