Я только начал играть с Ruby on Rails и столкнулся с проблемой со ссылкой на другое действие в контроллере из определенного представления.Я почти уверен, что это проблема (или отсутствие кода) в моем routes.rb
файле, но я думаю, что неправильно понимаю, как именно работает этот файл и что я должен делать.У меня есть решение, но я уверен, что это не лучший способ сделать это.
У меня есть один контроллер с именем home
с двумя действиями, index
(по умолчанию) и newbill
.Внутри index.html.erb
у меня есть:
<h1>Home View</h1>
<%= link_to "new", :controller => "home", :action => "newbill" %>
Однако я получил ошибку маршрутизации:
No route matches {:controller=>"home", :action=>"newbill"}
Выполнение rake routes
дает мне следующее:
root / {:controller=>"home", :action=>"index"}
Затем я (после некоторого поиска в Google) добавил этот код в routes.rb
match 'home/newbill' => 'home#newbill', :as => :newbill
А потом в моем index.html.erb
я получил это:
<%= link_to "Name", newbill_path %>
И теперь это работаеткак и ожидалось.Однако мои вопросы:
- Почему это работает?Что именно происходит за кулисами?
- Конечно, это не лучший способ сделать это?Добавление еще
match 'home/newbill'...
для каждого контроллера / действия, на которое я хочу сослаться, кажется мусором.
Мне действительно нравится Ruby, но я немного борюсь с этим аспектом Rails ... маршрутизацияВ общем, я немного запутался, я думаю!
Любая помощь очень ценится: D
Спасибо,
Джек