link_to Вспомогательные модификации

Внутри приложения rails, над которым я работаю, я немного изменил помощник link_to:

  def link_to(*args, &block)
    args[1] = params[:client_id].present? ? "#{args[1]}?client_id=#{params[:client_id]}" : args[1]
    super
  end

Я сделал это, чтобы мне не приходилось добавлять :client_id => params[:client_id] каждый раз, когда я писал link_to внутри приложения. Ну, я как бы заморочился со следующей проблемой...

Если у меня есть это link_to:

<%= link_to "Continue to billing info", add_product_path(:product_id => @product.id), :class => 'btn' %>

Использование моего помощника link_to создает ссылку, например:

http://localhost:3001/orders/add_product?product_id=35?client_id=HT274848772

Я немного не понимаю, как изменить мой помощник, чтобы ссылка работала как обычно, включая параметр :client_id...


person dennismonsewicz    schedule 04.01.2013    source источник
comment
Вы видели исходный код link_to? github.com/rails/rails/ блоб/   -  person Ray Shih    schedule 04.01.2013
comment
Да, есть... Я просто пытался придумать решение, поэтому я не добавлял параметр client_id каждый раз, когда писал link_to... какие-нибудь предложения?   -  person dennismonsewicz    schedule 04.01.2013


Ответы (1)


Вы хотите добавить свой параметр к URL-адресу ссылки, а не к самой ссылке. Возможно, вам следует переписать хелпер url_for, который используется всеми хелперами URL ( http://apidock.com/rails/ActionView/Helpers/UrlHelper/url_for)

person ChuckE    schedule 04.01.2013
comment
Я никогда раньше не использовал url_for, можете привести пример? - person dennismonsewicz; 04.01.2013
comment
url_for(:controller =›baby_controller, :action =›kill, :id =›69) обычно является результатом вызова kill_baby_url(69). я полагаю, вы хотите постоянно добавлять туда свой client_id. - person ChuckE; 05.01.2013