我试图从控制器渲染一个部分(ajax请求到控制器,它呈现部分因此JS可以插入到DOM中)。
部分代码很简单。它需要一个对象
查看
= render "partials/foo", object: @bar
部分
= object.name
从视图中可以正常工作。但是当我从控制器尝试此操作时(将params
作为对象传递)我得到错误未定义变量object
控制器
render "partials/foo", object: params[:data]
params[:data]
只是hash
答案 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]
在您的部分内容中,您可以使用变量a
和b
。
或者,如果params[:data]
具有简单值,则可以定义自己的变量:
params[:data] = 'something'
render "partials/foo", my_variable: params[:data]
在您的部分内容中,您可以使用my_variable
。