【问题标题】:Ruby On Rails Nested Controllers: create model troubleRuby On Rails 嵌套控制器:创建模型问题
【发布时间】:2012-06-26 20:45:04
【问题描述】:

我在用户下嵌套了控制器评论,都是由脚手架生成器生成的;视图/索引操作效果很好,但是当我尝试创建模型(/users/1/reviews/new)时出现错误

No route matches {:controller=>"reviews", :user_id=>#<Review id: nil, user_id: nil, reviewer_id: nil, predisposition: nil, description: nil, created_at: nil, updated_at: nil>}

我尝试将 form_for @review 更改为 form_for user_reviews_path(@review),但 create 操作出现相同的错误。

我该如何解决这个问题?

如果你能推荐我一本关于 Ruby On Rails 食谱的书,我将不胜感激(我从 pragmatic 读过 ROR 食谱,但它太简单了)。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 controller


    【解决方案1】:

    在您的控制器中:

    @user = User.find params[:id]
    @review = @user.reviews.build(<enter your initialization params here>)
    

    在你看来:

    =form_for [@user, @review] do |f|
    

    我会从优秀的http://ruby.railstutorial.org/ 开始,当然还有http://railscasts.com

    【讨论】:

    • 还有一个麻烦,在索引操作中,当有任何记录是路由错误时,麻烦就从 %td= link_to 'Edit', edit_user_review_path(review)。怎么了?路线看起来像资源:用户做资源:评论结束谢谢。
    • 当你编辑一个现有的嵌套资源时,你需要告诉路由器这个对象和它的父对象——在这个例子中是用户和评论。所以你需要:edit_user_review_path(user, review)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多