更新变量后重新渲染视图

时间:2014-09-02 18:18:47

标签: ruby-on-rails

我正在尝试制作一个允许配置产品的表单。例如,您可以添加一个小部件,这将导致产品的价格添加£x 。例如,Apple's configuration page。如果您选择不同的处理器或w / e,价格将在视图中相应更新。

所以我的模型中有一个包含基本价格的字段,我将视图中显示的价格设置为base_price + addons[]

我无法弄清楚当用户更改某些配置设置时如何更新视图中的价格。我可以更改变量的值,但我不知道如何更新视图中显示的内容。

据我所知,视图中的嵌入式Ruby代码只能在加载时调用,因此显示的价格始终只是total_price变量的原始值。我猜我需要Javascript,但Rails中有没有这样的规定呢?

感谢。

1 个答案:

答案 0 :(得分:1)

是的,您可以将remote:true选项添加到表单中,然后在通过ajax将数据发送到服务器并在控制器中处理之后,您可以使用扩展名.html.js呈现视图,并在该视图中添加一些javascript代码来更新您当前的视图:

$("#total-price").replaceWith("<%= j(render(partial: 'location', layout: false)) %>");

然后在ajax调用之后返回到视图时执行那段javascript(你可以通过erb增强某些ruby)。

这是rails提供的一个非常强大的工具。