Мне нужна помощь в ресурсоемкой маршрутизации и: доступ к идентификатору

#ruby-on-rails #ruby-on-rails-3 #resources #rails-routing

#ruby-on-rails #ruby-on-rails-3 #Ресурсы #рельсы-маршрутизация

Вопрос:

Как мне получить доступ к идентификатору книги в подобном методе из like_book_path(@book),:method=>:post .Как вы можете видеть, эта ссылка находится в цикле книги.Что мне нужно сделать like_book_path(@book) , чтобы перенести book_id и как я могу получить к нему доступ в подобном действии? пока в представлении я могу получить идентификатор book.id .Любая помощь будет высоко оценена.

Вид:

 <% @books.each do |book|%>
  <%= book.name%>
  <%= link_to "like this book", like_book_path(@book), :method => :post %>
<%end%>
  

Контроллер книги:

 def like
  @book = Book.find(params[:id])
  #other methods to facilitate like functionality   
end
  

Маршрут:

 resources :book do
  member do
    post :like
  end
end
  

Ответ №1:

Я думаю, вам следует заменить свой цикл на:

 <% @books.each do |book|%>
  <%=book.name%>
  <%=link_to "like this book",like_book_path(book),:method=>:post %>
<%end%>
  

разница заключается только в использовании book вместо несуществующего @book .

Комментарии:

1. Я думаю, я приближаюсь, но как мне получить к нему доступ в контроллере params[:id] , я все еще не могу найти идентификатор, хотя я вижу его в журнале `Обработка BookController#like как параметры HTML: {«authenticity_token»=>»5eWRqPg3ABKVR /HgTI2oVA8DEd1 hJUDVZktiFbhQr4=», «id»=>»11»} Завершено 404, не найдено за 1 мс ActiveRecord::RecordNotFound (не удалось найти книгу без идентификатора): `