0

我正在尝试在 RoR 中设计一个简单的博客,但结果不是我所期望的。它只涉及两个表,一个 Post 表和一个 Comments 表。

has_many :commentsPost 模型评论模型belongs_to :Post中放了一个

在后期展示模板中,我有以下内容:

<p id="notice"><%= notice %></p>

<h1>
  <%= @post.title %>
</h1>
<p>
  <%= @post.body %>
</p>

<h2>Comments</h2>
<% @post.comments.each do |comment| %>
  <p><%= comment.comment %></p>
  <p><%= time_ago_in_words comment.created_at %> ago </p>
<% end %>

<%= form_for(@post.comments.create) do |f| %>
  <div class="field">
    <%= f.text_area :comment %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

<%= link_to 'Edit', edit_post_path(@post) %> |
<%= link_to 'Back', posts_path %>

在评论控制器中,我有以下内容:

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

我的问题是,当我创建关联的评论时,页面会重定向到评论页面,而我希望它重定向到我评论的帖子。我做错了什么?

我的环境在 MacOs 10.8.2 RoR - 3.2.10 Ruby 1.9.3p362

谢谢

4

1 回答 1

0

在帖子的显示页面中

def show
 @post = Post.find(params[:id]
 @comment = @post.comments.new
end

In View
<%= form_for([@post,@comment])... %>

Routes File Contain 
resources :posts do
  resources :comments
end

现在您的评论控制器在创建操作中有 post_id

CommentsController < ...
before_filter :load_post
def create
  @comment = @post.comments.new(params[:comment])
  .....
end

private
def load_post
 @post = Post.find(params[:post_id]
end

@post.comments.create将创建实际的评论对象,尽管您不想在每次显示页面点击时创建评论,

于 2013-01-04T06:43:34.323 回答