根据结果​​更改渲染部分

时间:2009-12-22 01:57:26

标签: ruby-on-rails

我正在试图弄清楚如何在现有的渲染部分上完成渲染。首先是一些背景知识:

我有一个基于来自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 }

非常感谢任何帮助,感谢您花时间准备我的答案。

此致〜

1 个答案:

答案 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的方法。