开发者

Ruby on Rails 3: link_to create new nested resource?

I am trying to make a link to create a new nested resource in my Rails 3 application, but I can't figure it out. What is the syntax to link to a new nested resource

Solution:

Make sure you have your resources properly nested in your routes file.

resources :books do
  resources :chapters
end

Then in your view script you can call it like this:

<%= link_to 'New Chapter', new_book_chapter_path(@book) %>

The Rails Guide on Routing was quite helpful.

Note: if you get a message like Couldn't find Book without an ID, the problem isn't the link, it's the code in your controller.

def new
  @b开发者_如何学运维ook = Book.find(params[:book_id]) #instead of :id
  @chapter = @book.chapter.new
  respond_with(@chapter)
end


make changes in routes as

map.resources :books do |book|
    book.resources :chapters
end

and then use this

link_to new_book_chapter_path(@book)

You can also use this link to understand the concept better Nested Routes

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜