#ruby-on-rails #routing #ruby-on-rails-3.1 #routes
#ruby-on-rails #маршрутизация #ruby-on-rails-3.1 #маршруты
Вопрос:
Я пытаюсь создать ссылку на запись в моем приложении:
<ul class="presentation-box">
<% @presentations.each do |presentation| %>
<li><%= link_to "Presentation", presentations_path(@presentation) %></li>
<li><%= presentation.author %></li>
<% end %>
</ul>
Со следующей строкой в файле маршрутов:
resources :presentations
root :to => 'presentations#index'
По какой-то причине, когда я нажимаю на ссылку, она приводит меня к представлению индекса презентации. Я полагаю, что это должно привести меня к просмотру отдельной записи?
Я упускаю что-то очевидное?
Ответ №1:
Ваш link_to
неверен.
presentations_path
фактически укажет вам на то index
, что вы хотите presentation_path(presentation)
указать непосредственно на ресурс.
Кроме того, вы можете просто сделать <%= link_to 'Presentation', presentation %>
, и Rails построит для вас правильный путь
Комментарии:
1. В более короткой версии можно ли поместить заголовок записи презентации вместо слова Презентация?
2. Да,
<%= link_to @presentation.title, @presentation %>
. Первый аргумент — это текст, который будет отображаться, вторым будет ресурс, который rails преобразует для вас в путь.3. Хм .. неопределенный метод `title’ для nil:NilClass <— когда я использую ваш последний пример кода. Я что-то упускаю?
4. Ой, измените
@presentation
наpresentation
параметр, который вы передаете в свойeach
блок.
Ответ №2:
Измените его на presentation_path(presentation)