一个控制器动作或两个Ruby on Rails页面
问题描述:
我目前有一个模型,一个控制器有一个动作来列出模型中的所有项目。一个控制器动作或两个Ruby on Rails页面
我需要做的是在两个单独的视图中显示来自模型的不同数据。有没有一种方法可以使用一个控制器动作来显示基于参数的不同视图,还是我应该创建另一个动作?
我之所以犹豫创建另一个动作是因为我必须重复所有为前一个动作设置的路由。
感谢您的任何想法。
答
我不完全相信你已经提供了足够的信息来给出可以被认为是“好”的答案,但是如果我正确地理解了你,这应该是可能的。
例如,你不能做这样的事吗?
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
让我知道是否有帮助。如果您可以提供更多信息,我可能会清理这个示例以提供更多信息。
答
你没有提到你是否使用资源路由。如果是这样,我只需在路线中添加一个新选项即可。
map.resources :products, :collection => { :some_great_name => :get }
你真的不应该担心添加视图或新的动作到你的控制器。一个行动应该通常只有几行代码。如果您的控制器操作开始复杂化,您应该考虑将该逻辑移入您的模型中。
这有帮助,我不知道发送一个动作到另一个。是否可以根据参数显示不同的观点? – coasthird 2009-11-09 04:49:36