我对我的默认控制器进行了大量修改,现在我无法在创建时填充user_id。
我很好奇这是如何填充的。如果您有兴趣,请查看我的路线和模型关联,然后在最后我将向您展示结果参数。最终结果是没有添加user_id
。
路由
resources :users do
resources :posts do
collection do
get :view
end
end
end
模型
#Post.rb
belongs_to :user, :touch => true
#User.rb
has_many :posts
我导航到这个网址..
http://localhost:3001/users/1/posts/new
并发布我的帖子,params
返回此信息:
{"commit"=>"save", "post"=>{"name"=>"hell hath no furry", "category"=>"vegan", "url"=>"www.reddit.com", "text"=>"", "is_link"=>"1"}, "authenticity_token"=>"aYnSLgJ9E6MaM6iSkRrCyyiMZj06oLdybTMkNqss8FA=", "utf8"=>"✓", "action"=>"create", "controller"=>"posts"}
这之前有用,不知道为什么它不再关联它们了。
有什么想法吗?
答案 0 :(得分:1)
在你的form_for中,你是否传递了@user?
form_for([@user, @post]) do
也许这会有所帮助:
http://www.gatezero.org/blog/2008/4/30/rails-nested-resources-and-form_for.html
答案 1 :(得分:0)
嗯我不喜欢回答我自己的问题,但我找到了这个解决方案,并且想知道这是否是一种可以接受的方式来实现这个目标。
在def create
的控制器中,我这样做:
@post = current_user.posts.create(params[:post])
而不是:
@post = Post.new(params[:post])