我目前有一个模型,一个控制器,其中一个操作列出了模型中的所有项目。
我需要做的是在两个单独的视图中显示模型中的不同数据。有没有办法可以使用一个控制器动作来显示基于参数的不同视图,还是应该创建另一个动作?
我不愿意创建另一个动作的原因是因为我必须复制我为前一个动作设置的所有路由。
感谢任何想法。
答案 0 :(得分:4)
我不完全确定你提供了足够的信息来提供可以被视为“好”的答案,但如果我理解正确,那么这应该是可能的。
例如,你不能做这样的事吗?
def show
@my_objects = MyObject.all
if params[:full_view]
render :action => 'show_full_fiew' and return
end
# if you get here, it will render the 'show' action
end
如果有帮助,请告诉我。如果您可以提供更多信息,我可以清理这个示例以提供更多信息。
答案 1 :(得分:0)
您没有提及是否使用资源路由。如果是这样,我只需在您的路线中添加一个新选项。
map.resources :products, :collection => { :some_great_name => :get }
您真的不应该担心向控制器添加视图或新操作。 通常只需要几行代码就可以了。如果您的控制器操作开始变得复杂,您应该考虑将该逻辑移动到您的模型中。