Как отправить параметр к действию другого контроллера через URL в рельсах? - PullRequest
0 голосов
/ 17 сентября 2018

Как отправить параметр на действие другого контроллера через 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 действие controller2?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Хорошей практикой в ​​рельсах является использование именованных маршрутов вместо строковых URL.

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

Будет сгенерирован URL-адрес типа /controller2/new/#{parameteroffirst.id}?controller1_id=#{@controller1.id}. но завтра вы можете изменить маршрут без необходимости перебирать код, изменяя жестко закодированные ссылки.

0 голосов
/ 17 сентября 2018

Если вы действительно хотите записать это так, попробуйте изменить:

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

На:

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

Но действительно стоит прочитать о том, как ссылки должныработа в рубине / рельсах:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...