Ruby on rails RubyonRails中的一个简单博客没有按预期工作
我试图设计一个简单的博客,但结果不是我所期望的。它只涉及两个表:Post表和Comments表 我在评论模型中放置了一个Ruby on rails RubyonRails中的一个简单博客没有按预期工作,ruby-on-rails,Ruby On Rails,我试图设计一个简单的博客,但结果不是我所期望的。它只涉及两个表:Post表和Comments表 我在评论模型中放置了一个有很多:评论,在评论模型中属于:Post 在后期展示模板中,我有以下内容: <p id="notice"><%= notice %></p> <h1> <%= @post.title %> </h1> <p> <%= @post.body %> </p> &l
有很多:评论
,在评论模型中属于: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
在帖子的显示页面中感谢
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
def显示
@post=post.find(参数[:id]
@comment=@post.comments.new
结束
鉴于
路由文件包含
资源:员额可以
资源:评论
结束
现在,您的注释控制器在创建操作中具有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
CommentsController<。。。
前过滤器:加载后过滤器
def创建
@comment=@post.comments.new(参数[:comment])
.....
结束
私有的
def装载柱
@post=post.find(参数[:post\u id]
结束
@post.comments.create
将创建实际的注释对象,尽管您不希望在每次显示页面点击时创建注释,这给了我一个无法将nil转换为精确数字的错误Hey dude remove first@comment=@post.comments.build(参数[:comment])@comment.save
从创建它是comment controller的一部分您可以根据我的想法基于id重定向到post show页面您应该有嵌套资源我想我的问题可能在路由文件中(很快就会改变)。但是我有一个小问题,这不是一种黑客行为:私有def load_post@post=post.find(params[:post_id]end
来回答您的“hack”问题。不,它不是,它是rails中的标准模式。尽管如果您只有一个操作,直接从create调用load_post可能比使用before_筛选器更好