Ruby on rails 正在向新方法发送参数
我想覆盖控制器中的默认Ruby on rails 正在向新方法发送参数,ruby-on-rails,ruby-on-rails-4,routing,Ruby On Rails,Ruby On Rails 4,Routing,我想覆盖控制器中的默认new方法以接收一些参数。最好的方法是什么?像这样更改路由并向方法添加参数 get 'article/:id/new', to: 'articles#new', as: :new_article 在控制器中: def new(master) @article = current_user.articles.new(master) end def new @article = current_user.articles.new some_param: params
new
方法以接收一些参数。最好的方法是什么?像这样更改路由并向方法添加参数
get 'article/:id/new', to: 'articles#new', as: :new_article
在控制器中:
def new(master)
@article = current_user.articles.new(master)
end
def new
@article = current_user.articles.new some_param: params[:some_param]
end
有更好的方法吗?我让它工作的唯一方法就是在表单中使用一个隐藏字段,这一点都不理想。你有一个表单链接到你的
新操作吗?这就坏了,应该只是一个链接
只需将参数添加到链接:
link_to "New Article", new_article_path( some_param: "some_value" )
然后在控制器中:
def new(master)
@article = current_user.articles.new(master)
end
def new
@article = current_user.articles.new some_param: params[:some_param]
end
如果路由已经是RESTful路由(例如参考资料:articles
),则无需更改路由,只需向控制器添加新的
方法/操作即可。但是-我不清楚为什么需要将master
作为参数传递给操作?你能从params那里拿出来吗?我正在改变路线。我想在构建新的时加载一个主资源来填充表单的一半。这不是操作的工作方式。。他们不直接接受论点。它们通过params散列获取参数,因此您不妨连续使用现有的新actionTwo。谢谢很抱歉,我看到了您的评论,刚刚将我的呼叫更新为new
-您是对的,我忘记了params[:some_param]
只是一个值,而不是散列。您现在可以看到,我在前面添加了一些参数:
,因此总体上,一个哈希值被传递到new
。有关于存储的想法吗:新建和创建之间的一些参数?(如前所述,我不想让我那令人敬畏的隐藏字段的想法持续太久…)在新的会话中[:some\u param]=params[:some\u param]
,在create中得到它=会话[:some\u param]
是的,很酷,我想会话将是它。谢谢你的帮助。