#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 (не удалось найти книгу без идентификатора): `