2012-02-19 5 views
0

Немного новичков Rails здесь, поэтому, пожалуйста, несите меня.Использование радиокнопки и link_to с Ruby on 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? %> 

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

ответ

1

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

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

    RECIPE_LIST_HERE 
<% end > 

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

+0

Есть ли способы сделать это с помощью link_to? Или это слишком сложно и требует много времени? – lordmarinara

+0

Вы можете добавить обработчик javascript onClick в свой link_to, чтобы установить скрытое поле формы, содержащее действие, и отправить форму. Но если ваша цель состоит в том, чтобы ваши кнопки выглядели как ссылки, вы могли бы использовать CSS. –

+0

По какой-то причине каждый раз, когда я пытаюсь получить доступ к параметрам [: recipe] в моем контроллере через «variableName = params [: recipe]» и попытаюсь записать эту переменную, он продолжает выходить как ноль. Правильно ли я это делаю? – lordmarinara

Смежные вопросы