下面的 ruby on rails 代码片段有点麻烦 - 我有书,想更新书名,这是我尝试做的方法:
<h1>Edit the book "<%= @book.name %>"</h1>
<%= form_tag action: :update, id: @book do %>
<p>
<label for="book_name">Name</label>
<%= text_field :book, :name %>
<%= submit_tag 'Save changes' %>
</p>
<% end %>
这就是我在书籍控制器中所做的:
def edit
@book = Book.find(params[:id])
end
def update
@book = Book.find(params[:id])
if @book.update_attributes(params[:book])
redirect_to :action => 'show', id => @book
else
@subjects = Subject.find(:all)
render :action => 'edit'
end
end
这些是我的路线:
root to: 'authors#index'
resources :books, :authors
当我单击表单中的提交按钮时,它给我No route matches [POST] "/books/5"
并指向 localhost:3000/books/5 而不是停留和 localhost:3000/books/5/edit
我在这里做错了什么?不应该有一个 put 方法来更新某处的东西而不是 post 方法吗?