以下のフォームが部分的に機能しています。請負業者モデルの部分呼び出しを実行しようとしています。また、現在のページのモデル 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