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]
是的,很酷,我想
会话将是它。谢谢你的帮助。