Ruby on Rails - передача параметров в link_to с условиями if? - PullRequest
0 голосов
/ 31 августа 2018

Я хочу передать параметр (например, параметр называется company = heise) по ссылке на, но только если параметр действительно присутствует.

Позволяет сказать:

Я посещаю somesite.com и нажимаю ссылку, которая перенаправит меня на mysite.com/?company=heise На mysite у меня есть несколько link_to, и я хочу, чтобы они передавали параметр company=heise, когда он присутствует, и поскольку он присутствует сейчас, потому что я зашел на сайт через mysite.com/?company=heise, он должен сделать следующее:

<%= link_to "This is a link", this_link_path, class: tl(this_link_path) %>

должен перенаправить меня на mysite.com/this_link/?company=heise

  • Если установлено значение company = heise, я хочу отобразить их в URL-адресе, а также, если оно не задано, не отображать его.

Надеюсь, я прояснил свой вопрос достаточно

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Идея в том, чтобы создать вспомогательный метод для управления параметрами, которые вы хотите отправить по этой ссылке условно.

# some_helper.rb
def carried_over_params(params = {})
  interesting_keys = %i(company)
  params.slice(*interesting_keys).compact
end

После этого вы должны использовать это в представлении

<%= link_to "This is a link", this_link_path(carried_over_params(params).merge(test: 'value')), class: tl(this_link_path) %>
0 голосов
/ 31 августа 2018

Условно передайте хеш, содержащий дополнительные параметры для this_link_path url helper.

<%= link_to "This is a link", this_link_path( ({company: params[:company] } if params[:company]) ), class: tl(this_link_path) %>

Чтобы быть более кратким, вы можете компактный хеш.

<%= link_to "This is a link", this_link_path({company: params[:company]}.compact), class: tl(this_link_path) %>

Если вы знаете, что вам это понадобится чаще, оберните this_link_path вызовом специального помощника. Хеш может содержать дополнительные параметры, в том числе с фиксированными значениями.

def this_link_with_additional_params_path
  this_link_path({company: params[:company], name: 'test'}.compact) 
end

Тогда в поле зрения вы можете использовать:

<%= link_to "This is a link", this_link_with_additional_params_path, class: tl(this_link_path) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...