Controller Rails 5:局部形式的局部变量

Controller Rails 5:局部形式的局部变量,controller,instance-variables,Controller,Instance Variables,为什么视图中的某些实例变量没有“@”符号?Rails提供了一种方便,可以使用与控制器名称匹配的实例变量,还是其他东西在起作用 例: 拾取控制器.rb @pick = Pick.new @show = Show.new <%= pick.class %> // no exception raised <%= show.class %> // "undefined local variable or method `show'" exception raised <

为什么视图中的某些实例变量没有“@”符号?Rails提供了一种方便,可以使用与控制器名称匹配的实例变量,还是其他东西在起作用

例:

拾取控制器.rb

@pick = Pick.new
@show = Show.new
<%= pick.class %> // no exception raised
<%= show.class %> // "undefined local variable or method `show'" exception raised
<%= render 'form' %>
<%= render 'form', person: @person %>
\u form.html.erb

@pick = Pick.new
@show = Show.new
<%= pick.class %> // no exception raised
<%= show.class %> // "undefined local variable or method `show'" exception raised
<%= render 'form' %>
<%= render 'form', person: @person %>
//未引发异常
//引发“未定义的局部变量或方法'show'”异常

这是Rails 5的一个变化。默认视图文件现在将局部变量传递给表单partial

而不是这个

new.html.erb

@pick = Pick.new
@show = Show.new
<%= pick.class %> // no exception raised
<%= show.class %> // "undefined local variable or method `show'" exception raised
<%= render 'form' %>
<%= render 'form', person: @person %>

这是新的默认设置

new.html.erb

@pick = Pick.new
@show = Show.new
<%= pick.class %> // no exception raised
<%= show.class %> // "undefined local variable or method `show'" exception raised
<%= render 'form' %>
<%= render 'form', person: @person %>

有关更多信息,请参见此