Rails使用来自控制器中的params的数据进行部分渲染

时间:2014-12-29 18:39:26

标签: ruby-on-rails ajax

我试图从控制器渲染一个部分(ajax请求到控制器,它呈现部分因此JS可以插入到DOM中)。

部分代码很简单。它需要一个对象

查看

= render "partials/foo", object: @bar

部分

= object.name

从视图中可以正常工作。但是当我从控制器尝试此操作时(将params作为对象传递)我得到错误未定义变量object

控制器

render "partials/foo", object: params[:data]

params[:data]只是hash

1 个答案:

答案 0 :(得分:0)

小心:object,因为它会期望一个与partial相同的变量(减去下划线)。您可以使用:as选项重命名变量。

如果您设置render partial: "foo", object: @foo,则部分内容中会有变量foo

render partial: "foo", locals: { foo: @foo }

相同

您可以使用:locals,这样您就可以在部分中设置对象的哈希值。假设params[:data]是哈希:

params[:data] = {a: 'something', b: 'another thing'}
render "partials/foo", locals: params[:data]

在您的部分内容中,您可以使用变量ab


或者,如果params[:data]具有简单值,则可以定义自己的变量:

params[:data] = 'something'
render "partials/foo", my_variable: params[:data]

在您的部分内容中,您可以使用my_variable