如何通过Rails中的url将参数发送到另一个控制器的动作?

时间:2018-09-17 10:39:46

标签: ruby-on-rails ruby ruby-on-rails-3

如何通过Rails中的url将参数发送到另一个控制器的动作?

controller1:

def show
  @controller1.id = params[:controller1_id]
end

在controller1的视图中:

%a.btn-general{:href => "/controller2/new/#{parameteroffirst.id}", :controller1_id @controller1.id,  :role => "button"} Add the first

如何将controller1.id发送到new的{​​{1}}动作?

2 个答案:

答案 0 :(得分:1)

如果您真的想这样写出来,请尝试更改:

:href => "/controller2/new/#{parameteroffirst.id}", :controller1_id @controller1.id

收件人:

:href => "/controller2/new?controller1_id=#{parameteroffirst.id}"

但是值得一读的是,链接应该如何在ruby / rails中工作:

https://api.rubyonrails.org/v5.2.1/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

答案 1 :(得分:0)

在Rails中的一个好习惯是使用命名路由而不是字符串url。

%a.btn-general{href: url_for(controller: :controller2, action: :new, id: parameteroffirst.id, controller1_id: @controller1.id), role: "button"} Add the first

它将生成类似/controller2/new/#{parameteroffirst.id}?controller1_id=#{@controller1.id}的网址。但是明天您可以更改路线,而无需遍历代码来更改硬编码链接。