我是一个Rails新手,想做点什么,但一直在弄乱。我很乐意帮忙。
我有一个简单的应用程序,有三个表。用户,机器人和收件人。机器人属于用户,收件人属于机器人。
在机器人展示页面上,我希望能够在机器人展示页面内为该机器人创建收件人。
我在机器人显示页面中有以下代码,其中列出了当前收件人:
<table>
<% @robot.recipients.each do |recipient| %>
<tr>
<td><b><%=h recipient.chat_screen_name %></b> via <%=h recipient.protocol_name</td>
<td><%= link_to 'Edit', edit_recipient_path(recipient) %> </td>
<td><%= link_to 'Delete', recipient, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
我想要做的是有一个空字段,用户可以在其中添加新收件人,并尝试了以下操作:
我将此添加到机器人展示视图中:
<% form_for(@robot.recipient) do |f| %>
Enter the screen name<br>
<%= f.text_field :chat_screen_name %>
<p>
<%= f.submit 'Update' %>
</p>
<% end %>
然后在show动作中给机器人控制器:
@recipient = Recipient.new
@recipients = Recipient.all
唉,我仍然收到NoMethod错误,上面写着:“未定义的方法`收件人'#”
我不确定我错过了什么。任何帮助将不胜感激。
谢谢。
答案 0 :(得分:0)
您可能需要@robot.recipient
。
@recipient
答案 1 :(得分:0)
使用@recipient,就像@ealdent所说。
您的更新操作应与此类似:
def update
@robot = Robot.find(params[:id])
@robot.recipients.build(params[:recipient])
...
end
这将在给定机器人的集合中创建收件人。
但是有更好的方法可以做到这一点,你可以添加无限数量的收件人,如here所述
希望这能让你开始。