Rails - Rendering an edit form partial within another partial

霸气de小男生 提交于 2019-12-11 08:15:30

问题


I have a table that I am trying to make a bit more streamlined. In my view (this view is already a partial (_recipe_ingredient.html.erb), I have the following code, where rendering the partial is not working:

<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>

Previously, I was using link_to to edit the recipe_ingredient as follows (which worked fine), but I would like not to have the user go to another page to edit - instead I want the form to be part of the table:

<td><%= link_to 'Edit Quantity', edit_recipe_ingredient_path(recipe_ingredient) %></td>

The edit partial (which the new non-working code calls) looks like:

<h1>Editing recipe_ingredient</h1>
<%= render 'recipe_ingredients/form', :recipe_ingredient => @recipe_ingredient %>

And the standard form partial looks like:

<%= 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 %>

Mainly, I'm confused why it works using link_to, but I can't simply render the partial. The error I'm getting is undefined method `model_name' for NilClass:Class in the first line of the form partial.

I've tried taking the "@" off @recipe_ingredient in the form partial, but that doesn't work either.

Thanks in advance for any help.


回答1:


just create object with @recipe_ingredient in your action i think its an edit action.

@recipe_ingredient = RecipeIngredient.find_by_id(params[:id)

hope this will work fine.



来源:https://stackoverflow.com/questions/6553515/rails-rendering-an-edit-form-partial-within-another-partial

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!