У меня есть таблица, которую я пытаюсь сделать более упорядоченной. На мой взгляд (это представление уже является частичным (_recipe_ingredient.html.erb), у меня есть следующий код, где рендеринг частичного не работает:
<tr>
<td><%= recipe_ingredient.ingredient.name %></td>
<td><%= recipe_ingredient.ingredient.weight1*recipe_ingredient.quantity %></td>
<td><%= recipe_ingredient.ingredient.description1 %></td>
<td><%= recipe_ingredient.quantity %></td>
<td><%= render(:partial => 'recipe_ingredients/edit', :locals =>
{:recipe_ingredient=> recipe_ingredient}) %></td>
<td><%= link_to 'Remove', recipe_ingredient, :confirm => 'Remove ingredient from
recipe?', :method => :delete %></td>
</tr>
Ранее я использовал link_to для редактирования recipe_ingredient следующим образом (что работало нормально), но я не хотел бы, чтобы пользователь переходил на другую страницу для редактирования - вместо этого я хочу, чтобы форма была частью таблицы:
<td><%= link_to 'Edit Quantity', edit_recipe_ingredient_path(recipe_ingredient) %></td>
Часть редактирования (которую вызывает новый нерабочий код) выглядит следующим образом:
<h1>Editing recipe_ingredient</h1>
<%= render 'recipe_ingredients/form', :recipe_ingredient => @recipe_ingredient %>
И стандартная форма частичного выглядит так:
<%= form_for(@recipe_ingredient) do |recipe_ingredient| %>
<% if @recipe_ingredient.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@recipe_ingredient.errors.count, "error") %> prohibited this
recipe_ingredient from being saved:</h2>
<ul>
<% @recipe_ingredient.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= recipe_ingredient.label :quantity %><br />
<%= recipe_ingredient.number_field :quantity %>
</div>
<div class="actions">
<%= recipe_ingredient.submit %>
</div>
<% end %>
Главным образом, я запутался, почему это работает с использованием link_to, но я не могу просто отрендерить частичное. Я получаю ошибку undefined method `model_name' for NilClass:Class
в первой строке формы.
Я пытался снять @ @ с @recipe_ingredient в частичной форме, но это тоже не работает.
Заранее спасибо за любую помощь.