2014-10-09 120 views
0

我有一個博客和評論的Rails應用程序,每篇博文都有很多評論。在每個博客(show action)中,我都可以在表單上提交評論。我的問題是我需要將blog_id在評論中與我正在查看的博客相關聯,我可以將其作爲隱藏視圖傳遞,但我要求最好的方式來做到這一點,也許我不知道的幫手。Rails 4與博客聯繫評論

<h3>Leave a reply</h3> 

<% @blog.comments.each do |comment| %> 
<p> 
    <%= comment.text %> 
</p> 

<% end %> 


<%= form_for(Comment.new) do |f| %> 

    <%= f.text_field :name %> 
    <%= f.text_area :text %> 
    <%= f.hidden_field :blog %> 


    <%= f.submit %> 
<% end %> 

回答

3

初始化新評論時,通過博客實例對其進行初始化。

def show 
    @blog = Blog.find(params[:id]) 
    @comment = @blog.comments.build 
    end 

然後,在你的形式,你想用的,而不是初始化一個新的評論評論比如:

<%= form_for(@comment) do |f| %> 

假設你有正確的關係的評論會自動有博客ID。

在創建操作中,您需要確保評論也是通過博客實例創建的。

def create 
    @blog = Blog.find(params[:id]) 
    @comment = @blog.comments.build(comment_params) 
    if @comment.save 
     # etc ... 
    end 

雖然評論與博客關聯可能不是取決於你想做的事,除非博客你的意思後有什麼好的設計決策。

+0

當我點擊提交時,我沒有通過博客ID,我明確這麼做嗎? – 2014-10-09 16:13:31

+0

你不需要。博客ID應該在params中。您的資源應該看起來像'/ blogs/1 /'< - 其中一個是博客ID。用它來獲取博客。你的路線將是'資源:博客做資源:評論#...'< - 這將確保評論總是在博客路線下的約束。查看這裏的嵌套資源:http://guides.rubyonrails.org/routing.html – Mohamad 2014-10-09 16:19:17