Rails帮助选择和渲染部分

时间:2011-03-29 13:56:51

标签: ruby-on-rails ruby-on-rails-3

想要创建一个选项,告诉在Rails 3应用程序中传递给部分的信息。

目前。 让我们说默认是

<% orders_date_range = @orders.closed_today %>

然后

<div id="reports">
  <%= render :partial => "report_details", :locals => { :orders => orders_date_range } %>
</div>

我可以创建一个select标签来传递orders_date_range吗?或者有更好的方法吗?


更新

<% orders = @orders.closed_today %>
<% @options = [["this week", @orders.closed_this_week],["this year", @orders.closed_this_year]]%>
<%= select 'orders', 'order', @options.collect {|f| [f[0], f[1]]}, :remote => true %>


<div id="reports">
   <%= render :partial => "report_details", :locals => { :orders => orders } %>
</div>

不知道为什么,但只能使用“订单”,“订购”才能选择。

applicaton.js

$("#orders_order").change(function(){
  $.getScript("reports");
});

reports.js.erb

$("#reports").html("<%= escape_javascript(render :partial => 'report_details', :locals => { :orders => params[:selected] } ) %>");

1 个答案:

答案 0 :(得分:0)

作为一个AJAX的事情可能会很酷....

<强> Form.erb:

#call this at the top of your view
<%= javascript_include_tag :defaults %>

<%= select 'orders', 'option', @options.collect {|f| [f[0], f[1]]}, :onchange => remote_function(:url => {:action => :render_my_partial}, :with => 'Form.Element.Serialize(this)' %>

<强>控制器:

def form
    @options = [["option1", option1],["option2", option2]...] 
end 

def render_my_partial
  render update do |page|
    page.replace_html 'reports', :partial => 'report_details', :orders => params[:orders][:option] 
  end
end