【问题标题】:Rails 4: passing multiple arguments to partialRails 4:将多个参数传递给部分
【发布时间】:2013-09-18 22:05:38
【问题描述】:

我可以将单个参数从视图传递给局部视图,但由于某种原因,当我添加第二个参数时,它是未定义的(无类)。

这是我在视图中调用部分的方式:

<%= render 'project_form', locals: {project: @project, form_method: 'patch'} %>

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

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

这会在视图中打印“true”,并且不会在日志中记录任何内容(空白行)。

为什么它不接收第二个参数?我可以调试@project,这是我所期望的。

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

所以我遇到了两个问题:1) 变量范围,2) render :partial 语法需要显式传递多个局部变量。

【问题讨论】:

  • 如果@project 正在工作,那么这可能意味着您甚至不需要传递它(因为它是一个实例变量并且已经可用)

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

它是您尝试打印的局部变量。在您的部分而不是@form_method 中尝试这个:

<%= logger.debug( form_method ) %>

我认为以下内容将在您的部分中打印值:

<%= form_method %>

【讨论】:

  • 谢谢。这似乎行得通。你能帮我理解为什么定义@project吗?实例变量的范围是否自动应用于部分?
  • 是的,@project 范围将自动应用于所有部分,您将渲染到您的视图中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 2015-09-15
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
相关资源
最近更新 更多