Ruby on Rails 3:link_to创建新的嵌套资源?

And*_*rew 7 ruby-on-rails ruby-on-rails-3

我试图建立一个链接来在我的Rails 3应用程序中创建一个新的嵌套资源,但我无法弄明白.链接到新嵌套资源的语法是什么

解:

确保您的资源已正确嵌套在路径文件中.

resources :books do
  resources :chapters
end
Run Code Online (Sandbox Code Playgroud)

然后在您的视图脚本中,您可以这样调用它:

<%= link_to 'New Chapter', new_book_chapter_path(@book) %>
Run Code Online (Sandbox Code Playgroud)

关于路由的Rails指南非常有帮助.

注意:如果您收到类似的消息Couldn't find Book without an ID,问题不在于链接,那么它就是您控制器中的代码.

def new
  @book = Book.find(params[:book_id]) #instead of :id
  @chapter = @book.chapter.new
  respond_with(@chapter)
end
Run Code Online (Sandbox Code Playgroud)

Roh*_*hit 3

更改路线为

map.resources :books do |book|
    book.resources :chapters
end
Run Code Online (Sandbox Code Playgroud)

然后用这个

link_to new_book_chapter_path(@book)
Run Code Online (Sandbox Code Playgroud)

您还可以使用此链接更好地理解 嵌套路由的概念