2011-07-01 86 views
1

我有一張表,我正在嘗試使其更加簡化。在我看來(這種觀點已經是一個部分(_recipe_ingredient.html.erb),我有以下的代碼,其中渲染局部不工作:Rails - 在另一個局部內渲染部分編輯表格

<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中以@recipe_ingredient的形式部分,但這也不起作用。

在此先感謝您的幫助。

回答

0

只需在您的動作中使用@recipe_ingredient創建對象,我認爲它是一個編輯動作。

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

希望這會工作正常。

+0

已經在控制器中。 – Lev