Rails 3: получить помощник пути текущего представления? - PullRequest
3 голосов
/ 24 июня 2011

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

Например, если бы у меня было:

resources :foos

Я бы хотел, чтобы представления были обернуты в div следующим образом:

<div id="foos_view"> foos#index here </div>
<div id="foo_view"> foos#show here </div>
<div id="new_foo_view"> foos#new here </div>
<div id="edit_foo_view"> foos#edit here </div>

Итак, в основном я хотел бы использовать имя маршрута, но заменить «путь» на «вид».

У меня вопрос, есть ли способ получить имя маршрута для текущего вида?

Т.е.. если мой запрос example.com/foos/new есть ли что-нибудь, что я могу вызвать в представлении или контроллере, которое вернет new_foo_path?

спасибо!

1 Ответ

5 голосов
/ 24 июня 2011

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

Тем не менее, это Ruby, поэтому довольно легко написать быстрый помощник, который вернет нужную вам строку. Текущее имя контроллера доступно через controller.controller_name, а имя действия через controller.action_name.

Что-то подобное должно сделать тебя:

def html_id

   string = ""

   if controller.action_name =~ /new|edit/
      string += controller.action_name + "_"
   end

   if controller.action_name =~ /index|create/
     string += controller.controller_name
   else
     string += controller.controller_name.singularize
   end

   return string += "_view"

 end
...