Использование переключателей и link_to с Ruby on Rails - PullRequest
0 голосов
/ 19 февраля 2012

Немного новичка в Rails, поэтому, пожалуйста, потерпите меня.

Я пытаюсь составить список записей в таблице, указав сначала радиокнопку для каждой записи, а затем поля для записи просто как текст.

Работает нормально, отображается так, как я хочу. Однако проблема в том, когда я использую свои кнопки. Идея состоит в том, чтобы пользователь выбрал одну из переключателей, чтобы выбрать конкретный рецепт, а затем нажмите одну из универсальных кнопок «Добавить», «Редактировать», «Удалить» в верхней части страницы, чтобы выполнить соответствующее действие с выбранным рецептом.

Пока это мой код:

<!--Action buttons at the top of page, supposed to communicate with the radio buttons --> 
<%= link_to("Show", {:action => 'show', :id => recipe.id}, :class => 'action show') %>
<%= link_to("Edit", {:action => 'edit', :id => recipe.id}, :class => 'action edit') %>
<%= link_to("Delete", {:action => 'delete', :id => recipe.id}, :class => 'action delete') %> 

<% @recipes.each do |recipe| %>
<tr>
  <td><%= radio_button_tag 'recipe', recipe, @recipe == recipe %></td>
  <td><%= recipe.total_calories %></td>
  <td><%=........15 more fields
</tr>`
<% end unless @recipes.nil? %>

Это выдает ошибку, что неопределенная локальная переменная или метод `recipe '. Я понимаю, почему я получаю ошибку; Ruby не знает точно, какой рецепт выбирает пользователь с помощью переключателя. Может кто-нибудь показать мне, как заставить радио-кнопки общаться с кнопкой действия?

1 Ответ

1 голос
/ 19 февраля 2012

Самый простой способ сделать это - создать форму, содержащую действия в качестве значений кнопки отправки. Что-то вроде:

<%= form_tag(PATH_TO_YOUR_CONTROLLER) do %>
   <%= submit_tag("Show") %>
   <%= submit_tag("Edit") %>
   <%= submit_tag("Delete") %>

   RECIPE_LIST_HERE
<% end >

Тогда вашему контроллеру нужно будет посмотреть, какое действие и рецепт были отправлены (я думаю, что они будут под параметрами [: commit] и params [: recipe]).

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