Помогите создать действие на другой странице показа - PullRequest
0 голосов
/ 14 июня 2010

Я новичок в 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) %>&nbsp;</td>
    <td><%= link_to 'Delete', recipient, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>
</table>

Я хотел бы создать пустое поле, в которое пользователь может добавить нового получателя, и попытаться выполнить следующее:

Я добавил это в представление Robots Show:

<% form_for(@robot.recipient) do |f| %>
Enter the screen name<br>
<%= f.text_field :chat_screen_name %>
<p>
  <%= f.submit 'Update' %>
</p>
<% end %>

, а затем это на контроллер робота в действии шоу:

@recipient = Recipient.new
  @recipients = Recipient.all

Увы, я все еще получаю NoMethodошибка, которая гласит: «неопределенный метод« получатель »для #»

Я не уверен, что мне не хватает.Любая помощь будет принята с благодарностью.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 июня 2010

Используйте @recipient, как говорит @ealdent.

Ваше действие по обновлению должно быть примерно таким:

def update
  @robot = Robot.find(params[:id])
  @robot.recipients.build(params[:recipient])
  ...
end

Это создаст получателя в коллекции для данного робота.

Но есть гораздо лучшие способы сделать это, где вы можете добавить неограниченное количество получателей, как описано здесь

Надеюсь, это поможет вам.

0 голосов
/ 14 июня 2010

Вместо того, чтобы звонить @robot.recipient в форме, вы, вероятно, хотите @recipient.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...