0

以下のフォームが部分的に機能しています。請負業者モデルの部分呼び出しを実行しようとしています。また、現在のページのモデル ID (引用 ID) も渡したいと考えています。

この行で失敗しています <%= hidden_​​field_tag :quote_id, @quote.id %> 'called id for nil'

手動ルートを作成して別の方法で検索しようとしましたが、テンプレートエラーが発生するため、今のところインデックスメソッドに残しています。

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
4

1 に答える 1

0

index.js.erb では、部分的な契約者をレンダリングしますが、コントローラーのインデックス アクションで @quote インスタンス変数を設定しません。そのため、この失敗が発生しています。@quote = # Some logic hereインデックス アクションに追加してみてください。

于 2012-08-31T10:27:18.850 に答える