我正在使用Rails 3.2.1。在Rails中嵌套資源時的不同視圖
使用嵌套資源時可以使用不同視圖嗎?即簡介/評論帖子/評論。假設您希望這兩個頁面看起來完全不同。有沒有一種方法可以在不重寫每個控制器操作中的渲染的情況下執行此操作?
最好我仍然想使用respond_with。
我正在使用Rails 3.2.1。在Rails中嵌套資源時的不同視圖
使用嵌套資源時可以使用不同視圖嗎?即簡介/評論帖子/評論。假設您希望這兩個頁面看起來完全不同。有沒有一種方法可以在不重寫每個控制器操作中的渲染的情況下執行此操作?
最好我仍然想使用respond_with。
我沒有找到任何東西,我到底做了以下方式:
class NestedController < ApplicationController
before_filter :retrieve_parent
before_filter :retrieve_scope
layout :retrieve_layout
def retrieve_scope
@scope = @parent.nil? ? controller_name : @parent.class.name.pluralize.downcase || ''
end
def retrieve_view
controller_name + '/' + @scope + '/' + action_name
end
def retrieve_parent
params.each do |name, value|
if name =~ /(.+)_id$/
@parent = $1.classify.constantize.find(value)
end
end
end
def retrieve_layout
template_exists?(@scope, 'layouts') ? @scope : 'application'
end
end
使用嵌套資源的每個控制器,將擴大從NestedController。
請注意,retrieve_parent函數是從Ryan的railscast關於多態關聯派生而來的。
希望這可以幫助別人。
我有同樣的問題,我所做的就是第一次分裂的控制器,如:
https://stackoverflow.com/a/14947230/1641163
,然後我爲每個嵌套控制器獨立的視圖。當您運行rails generate controller Profile_Comments new create index
時,您會在正確的目錄中獲得相應的視圖和助手(或者您當然可以創建它們並手動將它們放在那裏),這些視圖默認情況下會呈現。