在Rails中,如何将一个模型的“新”视图移动到另一个模型的“显示”视图?

时间:2010-08-25 18:16:02

标签: ruby-on-rails forms

我一直在阅读和观看嵌套表格上的视频,但我没有运气好运。 (......我知道这一定非常容易......)

我有这个观点'views / comments / new':

<% form_for([@job, @comment]) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<p>
<%= f.submit "Create" %>
</p>
<% end %>

...我想将此表单/文本框移动到“jobs / show”视图。

我的工作模式: job.rb

belongs_to :user
has_many :comments, :dependent => :destroy
has_many :assets
accepts_nested_attributes_for :assets
accepts_nested_attributes_for :comments

我想要的是在此作业“显示”页面底部添加新评论的表单。而不是去“/ jobs / 15 / comments / new”,我想在工作展示视图中使用“新评论”表单。

我怎么能这样做?

干杯。

2 个答案:

答案 0 :(得分:0)

如果我做对了,你想在工作展示页面上显示工作的所有评论,对吗?

如果是这种情况,我认为以下代码将完成这项工作:

<% @job.comments.each do |comment| -%>
  <%= comment.body %>
  <p/>
<% end -%>

答案 1 :(得分:0)

您可以将注释/新版权中的表单代码放入作业/显示视图中,但您需要确保在控制器中定义@comment。

jobs_controller.rb

def show
 @job = Job.find(params[:id])
 @comment = @job.comments.new
respond_to do |format|
 format.html
end
end

您可能希望确保注释的创建操作将用户重定向回作业,而不是注释。

我个人的建议是将该表单移动到部分,但如果您刚开始使用rails,这将使您朝着正确的方向前进。