我是Rails中的新成員,我在一個顯然很容易的任務中掙扎。 我有一個(精簡)形式:將Javascript變量傳遞給Rails partials
<%= 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 $在谷歌財經的報價(#這裏)當我點擊「獲取報價」和當符號文本字段失去焦點。 我已經編寫了代碼來提取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 %>
錯誤在view_quote.js.erb中,因爲sym是未定義的。 如果我更換了與第二行:
$('#quotes').html("<%=j render 'googlequote', symbol: 'just_a_test' %>");
部分呈現,但當然我並不需要它。 如何將javascript變量sym傳遞給部分_googlequote.html.erb? 否則,有沒有更好的方法來實現我的目標?
請參閱http://stackoverflow.com/questions/5161952/rails-link-to-remote-with-params關於如何發送參數作爲遠程請求的一部分。 –