2013-07-16 76 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

相關問題