2014-02-22 75 views
0

我仍然是一個新手,所以請原諒這個愚蠢的問題。我有3種型號:
- 用戶(通過色器件產生的),評論和帖子
3協會模型的表格

  • 用戶有很多的文章和評論
  • 評論屬於兩個職位和用戶
  • 發表了許多意見屬於用戶

我的routes.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。爲什麼?我誤解了一些東西嗎?非常感謝

回答

0

Rails的路由和表單處理是非常混亂,我還是搞錯了所有的時間...

我認爲你的問題是,你的一些變量未設置(nil)等鐵軌不能確定你實際上要做什麼。

我還想向你推薦你不要像這樣嵌套你的路線,除非你必須爲了網址。

它通常足以嵌套一層深度,並使用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 
+0

要創建當前用戶的帖子,我也做了同樣的方式,你之前,建議。但是這裏的東西是我想在POST中創建一個USER的COMMENT。所以這裏我們有3個模型關係。現在我使用這個技巧 $ comment = Comment.new(comment_params) $ comment.user_id = params [:user_id] $ comment.post_id = params [:post_id] 這與關係沒有任何關係。它只是手動設置屬性。任何建議? – TrisNguyen

+0

查看更新後的答案 – phoet