传递JavaScript变数Rails的谐音(Passing Javascript variable

2019-08-16 16:33发布

我在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 $在谷歌财经的报价(#这里)当我点击“获取报价”和当符号文本字段失去焦点。 我已经写了代码以提取在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,因为符号是不确定的。 如果我更换了下联:

$('#quotes').html("<%=j render 'googlequote', symbol: 'just_a_test' %>");

部分呈现,但当然我并不需要它。 我怎样才能通过JavaScript变量符号的部分_googlequote.html.erb? 否则,有没有更好的方式来完成我的目标是什么?

Answer 1:

你不能把它再培训局,该局是因为在服务器上呈现。 做到这一点的方法之一是使用符号作为一个参数去view_quote ,所以你可以有这样的:

$('#quotes').html("<%=j render 'googlequote', symbol: params[:sym] %>");

(当然,你可以更REST风格线了param所,但这是一个很好的起点)。



Answer 2:

您正在对订单收集的GET请求。 这意味着所有的人。 如果你想使用符号从订单模式,使成员的请求。

否则,你可以把它作为一个参数(我认为你正在试图做的)。 如果你想每次发生变化时将它传递给服务器,我建议jQuery的change方法。 然后,你可以做一个Ajax请求:

$.get('/orders', { sym: $('.orders #order_symbol').val() }, function(response) {
   $('#here').html(response);
});

而在控制器:

def view_quote
  @sym = params[:sym]
  # use @sym in rendering partial
end


Answer 3:

谢谢@奔taitelbaum和@ajcodez,最后我用了不同的方法,与例4中建议的优秀文章 ,并在其中RyanonRails的评论。

以这种方式,捕获符号字段改变事件之后,该符号被传递到其中逻辑(刮从谷歌金融报价)被实现该控制器。 结果再次被传递到JavaScript的JSON格式在布局中插入。



文章来源: Passing Javascript variables to Rails partials