表格为3种关联模式

时间:2014-02-22 11:37:18

标签: ruby-on-rails ruby-on-rails-4 devise

我还是新手所以请原谅这个愚蠢的问题。我有3个型号:
- 用户(由设计生成),评论和帖子

  • 用户有很多帖子和评论
  • 评论属于帖子和用户
  • 帖子有很多评论,属于用户

我的路线.rb

resources :users do
  resources :posts do
    resources :comments
   end  
end

我的表单代码:

<%= form_for([@user,@post,@comment]) do |f| %>
...
<% end %>

我想生成到user_post_comments_path,但上面form_for生成到post_comments_path。为什么?我误解了什么吗?非常感谢

1 个答案:

答案 0 :(得分:0)

Rails路由和表单处理非常混乱,我仍然一直都错了......

我认为您的问题是您的某些变量未设置(nil),因此rails无法确定您的实际情况。

我还建议您不要像这样嵌套您的路线,除非您必须为了网址。

通常足以嵌套一层深度,并在创建模型时使用current_user分配给模型。这也降低了发布其他用户ID时所涉及的安全风险:

def create
   @post = current_user.posts.build(post_params)
   [...]
end

def create
   @comment = current_user.comments.build(comment_params)
   @comment.post = Post.find params[:post_id]
   [...]
end