2011-03-29 71 views
2

想要创建一个选择,告诉要传递给Rails 3应用程序的部分信息。Rails帮助选择并呈现部分

当前。 比方说默认为

<% orders_date_range = @orders.closed_today %> 

然后

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

我可以创建一个选择标签在orders_date_range通过?或者有更好的方法来做到这一点?


UPDATE

<% 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] }) %>"); 

回答

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 
+0

试着填补空白与你的......,但它不是射击。添加方法并添加到路由中。是否选择了“参数”,“订单”,[[“本周”,@ orders.closed_this_week],[“本月”,@ orders.closed_this_month]]:onchange,但不工作。 – pcasa 2011-03-29 15:19:20

+0

更新了一些更彻底的 – 2011-03-29 15:54:13

+0

使用jquery,而不是原型。思想可以把我自己的转换看成是,但不能。 – pcasa 2011-03-29 16:56:55