2012-02-14 2 views
0

Я хочу изменить функциональность link_to таким образом, чтобы он добавлял параметр по умолчанию ко всем ссылкам, созданным на странице.Добавление общего параметра по умолчанию для link_to сгенерированных ссылок

например. текущее поведение.

link_to "foo", "/" generates <a href="http://www.example.com/">foo</a> 

я хочу указать в контроллере приложения (или где-нибудь еще центральный) что-то, что делает link_to вести себя как следует

link_to "foo", "/" generates <a href="http://www.example.com/?layout=foo">foo</a> 

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

можно ли поймать вызов link_to, добавить параметр и затем вернуть результат?

текущий обходной путь я использую, чтобы добавить параметр с помощью JQuery в HREF из ссылок .. но то не очень красиво на самом деле

+0

вам это нужно делать по всем ссылкам или вы просто нужно 'Params [: макет]', чтобы быть всегда установлен в контроллерах? –

+0

Мне действительно нужно это на всех ссылках на странице, которые указывают на другой путь в приложении. –

+0

Фактическая проблема заключается в том, что я отображаю страницу в определенном макете при загрузке в определенный iframe. Затем я хочу придерживаться этого макета, пока пользователь переходит в этот iframe. с другой стороны, когда он открывает страницу в новой вкладке или окне, он должен видеть нормальный макет. поэтому использование куки или сеансов невозможно, и у меня возникла идея просто передать параметр макета со ссылками, когда требуется конкретный макет. –

ответ

1

Вы можете переопределить link_to вспомогательный метод, и передать параметр по вашему собственному выбору. Поскольку я прошел параметр layout=foo в следующем коде.

def link_to(text='',link='#',options={}) 
 
    link = link.include?('?') ? "#{link}&layout=foo" : "#{link}?layout=foo" 
 
    super(text,link,options) 
 
end

Смежные вопросы