Rails 4:向局部视图传递多个参数

3
我可以将一个参数从视图传递到局部视图,但是当我添加第二个参数时,它会变成未定义的(nil class)。
以下是我在视图中调用局部视图的方式:
<%= render 'project_form', locals: {project: @project, form_method: 'patch'} %>

这里是部分代码(_project_form.html.erb)的顶部:

<%= logger.debug( @form_method ) %>

这将在视图中打印“true”,并在日志中记录空行(即没有输出)。

为什么它没有接收到第二个参数?我可以调试@project,它是我期望的类。

更新: 根据这个问题,您需要稍微修改渲染语法以传递多个参数。

所以我有两个问题:1)变量作用域,2)render :partial语法需要明确指定以传递多个局部变量。


如果@project正常工作,那么你可能根本不需要传递它(因为它是实例变量并已经可用)。 - Tom Prats
1个回答

2

你正在尝试打印本地变量。在你的部分中尝试这个而不是@form_method

<%= logger.debug( form_method ) %>

我认为以下代码将会在你的局部文件中打印出数值:

<%= form_method %>

1
谢谢。似乎可以工作。你能帮我理解为什么定义了 @project 吗?实例变量的范围是否自动应用于 partial 中? - emersonthis
是的,@project范围将自动应用于您在视图中呈现的所有部分。 - Rails Guy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接