【发布时间】:2015-03-19 00:01:40
【问题描述】:
我想覆盖控制器中默认的new 方法以接收一些参数。最好的方法是什么?像这样更改路由并为方法添加参数?
get 'article/:id/new', to: 'articles#new', as: :new_article
在控制器中:
def new(master)
@article = current_user.articles.new(master)
end
有没有更好的方法来做到这一点?我让它工作的唯一方法是在表单中使用隐藏字段,这根本不理想。
【问题讨论】:
-
如果路由已经是 RESTful 路由(例如
resources :articles),则无需更改路由,您只需将new方法/操作添加到控制器即可只是工作。但是 - 我不清楚您为什么需要将master作为参数传递给操作?你能把它从参数中拉出来吗? -
我正在改变路线的运作方式。我想在构建
new时加载一个master资源以填满表单。 -
这不是行动的运作方式。他们不直接接受论点。它们通过 params 哈希获取参数 - 所以您不妨使用现有的新操作
标签: ruby-on-rails ruby-on-rails-4 routing