【问题标题】:Rails nested resource creation on separate pages在单独的页面上创建 Rails 嵌套资源
【发布时间】:2013-02-23 21:49:57
【问题描述】:
resources :books do 
    resources :chapters
end

假设我有上述正确嵌套的资源。我想创建一个页面来创建父书资源和另一个页面来创建章节资源。创建章节时,我希望用户能够选择他们创建的父书。

现在我有...

protected
def find_book
    @book = Book.find(params[:book_id])
end

...在章节控制器中,但我相信这仅在 URL 中已经存在书籍 ID 时才有效。因此,当我希望能够在单独的页面上创建章节时,我必须访问“rootpath/book/book_id/chapter/new”来创建新章节。

虽然我真的不知道如何解决这个问题,但现在我的计划是在链接嵌套资源的章节创建页面上放置一个关联(?)表单。

问题是,我对 Web 开发真的很陌生,我不确定我是否完全正确地处理了这个问题。我将如何放置一个将 :book_id 发送到章节控制器的表单?这种方法会奏效吗?有没有更有效的方法?

我知道我的问题可能有点含糊,但任何帮助将不胜感激!

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    枯燥的答案是:您的提议仅对嵌套路由没有意义。

    嵌套路由意味着在访问chapters#new 操作时,您已经确切地知道哪本书应该包含该章节。

    但好的一面是:您可以同时使用嵌套和非嵌套路由。

    如果您想保留嵌套路由,但还提供newcreate 操作让用户为章节选择所需的书,您可以为章节创建添加非嵌套路由。

    例如:

    resources :books do
      resources :chapters
    end
    resources :chapters
    

    请注意,您的控制器可能需要稍微重写以适应双路由。

    如果需要,您可以在同一页面中创建这两个资源。查找 accepts_nested_attributes_for 即可。一旦你掌握了窍门,这真的很容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多