Ruby on rails Rails3,partials,可选参数-这是最好的方法吗?
从php迁移应用程序。并将其置于视图中:Ruby on rails Rails3,partials,可选参数-这是最好的方法吗?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,从php迁移应用程序。并将其置于视图中: <%=render :partial => "jt-test", :locals => {:info => "here is my info", :hide_location=>true} %> <br /><br /> <%=render :partial => "jt-test", :locals => {:info => "here is my info"} %&g
<%=render :partial => "jt-test", :locals => {:info => "here is my info", :hide_location=>true} %>
<br /><br />
<%=render :partial => "jt-test", :locals => {:info => "here is my info"} %>
“jt测试”,:locals=>{:info=>“这是我的信息”,:hide_location=>true}%>
“jt测试”,:locals=>{:info=>“这是我的信息”}%>
在jt-test.html.erb中:
My info:<br />
<%=info %>
<% if local_assigns.has_key? :hide_location %>
you want to hide location!
<% end %>
我的信息:
你想隐藏位置!
当地大学是否指定了适当/最佳的方法来实现这一点?我可以拥有无限数量的本地分配吗?是否为从控制器调用的主视图分配了本地_
thx在主视图中,您只需使用普通操作类变量(
@无论什么变量名
),它们在控制器中分配:
class FoosController
def index
@foos = Foo.all
end
end
# template
<% @foos.each |foo| %>
<%= foo.name %>
class食品控制器
def索引
@foos=Foo.all
结束
结束
#模板
你可能有无限的本地人在一个部分,但如果有很多,你可能是做错了。考虑使用封装对象,更多地打破模板等。
Rails根据局部变量的名称向其公开局部变量(
info
和hide_location
)。您不需要使用has\u key?
来查找它。请参阅《布局和渲染》指南中的。Rails 3改进了渲染局部的方式
<%= render "jt-test", :info => "here is my info", :hide_location => true %>
<br /><br />
<%= render "jt-test", :info => "here is my info", :hide_location => false %>
当地大学是否指定了适当/最佳的方法来实现这一点
以上是使用Rails 3渲染片段的首选方法
我可以拥有无限数量的本地分配吗
你的记忆力有限
是否为从控制器调用的主视图分配了本地_
不确定,但你为什么要这么做。将视图逻辑排除在控制器之外。如Dave所说,如果有很多可选变量,最好封装一个对象并将其传递给partial,但在检查可选局部赋值的情况下,
has\u key?
方法是最好的方法。如果变量是可选的,则应使用has\u key?
查找这些变量。甚至有人建议这样做。此外,最好的做法是使用局部变量重用分部,而不依赖未知的实例变量。@Draiken当然可以,如果它们是可选的。关于实例变量的评论是针对OP关于“控制器调用的主视图的本地_赋值”的问题的,是正确的。感谢您的工作,但我在指南中没有看到任何关于部分可选参数的讨论。也许我只是错过了it@timpone我认为指南中没有讨论这一点;我会使用简单的地图符号,而不是has\u key?
——我在你的问题中遗漏了这一点。这里有一个提到它的,还有一些其他的信息。也有一些信息。这看起来比:localsHmm…的语法更好。。。。我得到一个未定义的局部变量或方法“hide\u location”
错误。我肯定这可能是我的错误不,这是我的错误。您只需保持变量的一致性,并将其赋值为nil,这样您就不会像以前那样出现错误。的可能重复项
My info:<br />
<%= info %>
<% unless hide_location %>
you want to hide location!
<% end %>