我已经盯着这个看了好几个小时,我知道它只是某个地方的一个小错误,但我还没有足够的了解来看到它。
我用这个网站创建了博客的第一部分,在过去的 3 个小时里,我一直在尝试添加一个编辑链接,以便用户可以编辑评论和更新。
http://www.reinteractive.net/posts/32
让编码开始:
图书模型
class Book < ActiveRecord::Base
attr_accessible :title
validates_presence_of :title
has_many :snippets
belongs_to :user
accepts_nested_attributes_for :snippets
end
片段(评论)模型
class Snippet < ActiveRecord::Base
belongs_to :book
belongs_to :user
attr_accessible :body, :user_id
end
片段控制器
class SnippetsController < ApplicationController
before_filter :authenticate_user!, only: [:create]
def create
@book = Book.find(params[:book_id])
@snippet = @book.snippets.create!(params[:snippet])
redirect_to @book
end
def edit
@snippet = Snippet.find(params[:book_id])
end
def show
@book = Book.find(params[:id])
@snippet = @book.comments.find(:all, :order => 'created_at DESC')
end
end
片段_form.html.erb
<% form_for([@book, @snippet], :url => edit_book_snippet_path(@book)) %>
<%= form.error_notification %>
<div class="form-inputs">
<%= f.input :title %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
这就是为什么我在查看 rake 路线时无法理解的原因:
edit_book_snippet GET /books/:book_id/snippets/:id/edit(.:format) 片段#edit
我的路线是这样的
> http://localhost:3000/books/3/snippets/12/edit
但我的错误仍然是:
路由错误
没有路线匹配 {:action=>"edit", :controller=>"snippets", :book_id=>nil}
从树屋开始学习铁轨,但到了中级,更喜欢学习更难(但更有趣)的方式。
非常感谢帮助。