Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails3,partials,可选参数-这是最好的方法吗?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails3,partials,可选参数-这是最好的方法吗?

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

从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"} %>
“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 %>