【发布时间】:2014-07-15 12:41:56
【问题描述】:
在票证上执行显示操作,以提取票证上的 cmets 列表。我的目标是显示票证 cmets 列表,然后在其上方为某人提供添加 cmets 的选项。
这在表单位于 cmets 列表下方时有效,但是当我将其放在 cmets 上方时,我在 cmets 的呈现中收到错误消息,指出该记录没有用户 ID。几乎就像我的票控制器中的 @cmets 以某种方式从表单中添加了这个新东西,即使它是在表单呈现之前实例化的。
这是我的部分和控制器。第一次显示表单时的错误是“无法找到user_id = 0”,这是由于cmets.commenter,它查找提交评论的人的姓名。
票务控制器
def show
@ticket = Ticket.find(params[:id])
@comments = @ticket.comments
end
tickets/show - 表格在这里出现了两次,但我在尝试让它工作时只放了一次。我希望它在头把交椅上工作。
<div class="widget-content nopadding">
<ul class="new-comment">
<%= render "comments/form" %> --- Does not work here
</ul>
<ul class="recent-comments">
<%= render @comments %>
</ul>
</div>
<%= render "comments/form" %> --- Works here,
cmets/表格
<%= form_for([@ticket, @ticket.comments.build]) do |f| %>
<div class="field">
<%= f.label :content %><br>
<%= f.text_area :content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
cmets/评论
<li>
<div class="comments">
<span class="user-info"> User: <%= comment.commenter %> </span>
<p>
<strong>Comment:</strong>
PUBLIC: <%= comment.try(:content) %>
</p>
</div>
</li>
【问题讨论】:
-
您是否收到任何错误消息?
-
ActiveRecord::RecordNotFound at /tickets/6 找不到 'id'=0 的用户
-
错误出现在 cmets/comment 视图的第 3 行,它调用了评论者。因为这是由票证构建的,所以它还没有与之关联的用户 ID。我想我可以用一个用户 ID 来初始化它,但我想了解它与我的预期不同的根本原因。
标签: ruby-on-rails forms model-view-controller ruby-on-rails-4