我正在试图弄清楚如何在现有的渲染部分上完成渲染。首先是一些背景知识:
我有一个基于来自DB的数据呈现的表。在我呈现的部分之外,我有各种选择标记,允许数据从所选的特定选择标记更新。我试图做以下事情,但无济于事。
<%= select "sales", "short_desc", Sales.find(:all).collect{|x| [ x.short_desc]}, {:prompt => ''},
:onchange => remote_function(:url => {:controller => 'sales', :action => 'filterResults'},
:with => "'value=' + value") %>
所以在方法filterResults中,我有sql语句返回结果,我试图再次渲染部分。
render :partial => "tableReport", :locals => {:sales => @sales }
非常感谢任何帮助,感谢您花时间准备我的答案。
此致〜
答案 0 :(得分:1)
我想用AJAX吗?我会使用类似这样的RJS:
在您的控制器中:
def filterResults
@sales = ..
# logic
respond_to do |format|
format.html # renders the normal view if it's a normal request
format.js # renders filter_results.rjs if it's an ajax request
end
end
视图/销售/ filter_results.rjs
page.replace 'id_of_your_div', :partial => 'tableReport', :object => @sales
我没有测试过代码,因此可能需要进行一些更改。这个想法是你用ajax调用filterResults并返回一些用div替换div(或带有那个#id的任何其他对象)的javascript。您可以使用查看Rails API来查找更多通过RJS操作DOM的方法。