想要创建一个选项,告诉在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] } ) %>");
答案 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