2012-08-31 43 views
0

我有下面的形式作爲部分工作,我試圖做一個部分呼叫承包商模型,我想也傳遞當前頁面的模型ID這是一個報價編號。從部分形式檢索多個模型對象

其未能在此行<%= hidden_​​field_tag:quote_id,@ quote.id%>「名爲id的零」

我試圖創建一個手動路由,並把搜索在一個單獨的方法,但那麼我得到一個模板錯誤,所以我現在就把它留在索引方法中。

形式在show.html.erb:

<%= form_tag quotes_path, :method => 'get', :id => "contractors_search" do %> 
    <p> 
    <%= text_field_tag :search, params[:search] %> 
    <%= submit_tag "Search", :name => nil %> 
    </p> 
    <br><br><br> 
    <div id="contractors"><%= render 'contractors' %></div> 
<% end %> 

_contractors.html.erb

<table> 
<% @contractors.each do | contractor | %> 
<tr> 
    <td><%= contractor.firstname %></td> 
    <td> 
    <%= form_tag (quote_add_contractor_path) do %> 
     <%= hidden_field_tag :quote_id, @quote.id %> 
     <%= hidden_field_tag :contractor_id, contractor.id %> 
     <%= submit_tag "Add" %> 
    <% end %> 
    </td> 
</tr> 
<% end %> 
</table> 

index.js.erb的

$("#contractors").html("<%= escape_javascript(render :partial => "contractors") %>"); 

控制器:

def index 

    @quotes = Quote.all 
    @contractors = Contractor.search(params[:search]) 


end 


def add_contractor 
    @quote = Quote.find(params[:quote_id]) 
    @contractor = Contractor.find(params[:contractor_id]) 
    @quote.contractors << @contractor 

    if @quote.save 
     redirect_to @quote, notice: "contractor was added" 
    else 
     render :show, notice: "Sorry, something went aweful" 
    end 

end 

回答

0

在index.js.erb中,您渲染了部分承包商,但您不在控制器的索引操作中設置@quote實例變量。這就是你失敗的原因。嘗試將@quote = # Some logic here添加到您的索引操作中。