私はRailsの初心者で、明らかに簡単な作業に苦労しています。私は(簡素化された)フォームを持っています:
<%= form_for @order, html: { :class => 'form-inline' } do |f| %>
<fieldset>
<legend><%= params[:action].capitalize %> Order</legend>
<table class="table">
<thead>
<tr>
<th><%= f.label :symbol %></th>
<th><%= f.label :price %></th>
</tr>
</thead>
<tbody>
<tr>
<td><%= f.text_field :symbol, class: 'input-small' %></td>
<td><%= f.text_field :price, class: 'input-small' %></td>
</tr>
</tbody>
</table>
<div id='here'></div>
<%= f.submit "Submit", class: "btn btn-primary" %>
</fieldset>
<% end %>
<%= link_to 'Get quote', view_quote_orders_path, remote: true %>
「見積もりを取得」をクリックしてシンボルテキストフィールドがフォーカスを失ったときに、div $(#here) の Google Finance で見積もりをレンダリングしたいと考えています。Rubyで引用を抽出するコードをすでに書いています。
routes.rb に以下を追加しました:
resources :orders do
get 'view_quote', on: :collection
end
order_controller.rb に以下を追加しました:
def view_quote
respond_to do |format|
format.js { render :layout => false }
end
end
そしてview_quote.js.erbで:
sym = $('.orders #order_symbol').val();
$('#quotes').html("<%=j render 'googlequote', symbol: sym %>");
そして _googlequote.html.erb (引用を抽出するロジックを配置します):
<%= symbol %>
sym が定義されていないため、エラーは view_quote.js.erb にあります。2行目を次のように置き換えると:
$('#quotes').html("<%=j render 'googlequote', symbol: 'just_a_test' %>");
パーシャルはレンダリングされますが、もちろん必要ありません。javascript 変数 sym を部分的な _googlequote.html.erb に渡すにはどうすればよいですか? そうでなければ、私の目的を達成するためのより良い方法はありますか?