Ruby on Rails中的一个简单博客没有按预期工作

时间:2013-01-04 06:40:53

标签: ruby-on-rails

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

我在评论模型 中的帖子模型has_many :comments加了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

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

我的环境是MacO 10.8.2 RoR - 3.2.10 Ruby 1.9.3p362

由于

1 个答案:

答案 0 :(得分: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会创建实际的评论对象,但您不希望在每次展示页面点击时都创建评论,