Don*_*hes 38 ruby ruby-on-rails partial-views
我不确定我是否在这里做最好的方法,但是我有一个数据块,我想在搜索完成之后显示并且之前根本不存在.首先,没有什么可以显示,第二个它引用的模型是零,所以它抛出异常.
我将此块放在一个部分模板中,并在我的布局中添加了适当的位置.有条件干净地渲染局部的方法吗?有没有更好的方法来解决这个问题?
Mik*_*cic 49
Ruby允许你做这样的好事:
<%= render :partial => "foo/bar" if @conditions %>
Run Code Online (Sandbox Code Playgroud)
为了使这更容易阅读和理解,它可以写成:
<%= render(:partial => "foo/bar") if @conditions %>
Run Code Online (Sandbox Code Playgroud)
render
是一个函数,你传递一个哈希值,告诉它要呈现哪个部分.Ruby允许你把东西放在一行上(这通常使它们更具可读性和简洁性,特别是在视图中),因此该if @conditions
部分只是一个常规的if语句.它也可以这样做:
<% if @conditions %>
<%= render :partial => "foo/bar" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
编辑:
Ruby还允许您使用unless
关键字代替if
.这使代码更具可读性,并使您不必进行负面比较.
<%= render :partial => "foo/bar" if !@conditions %>
#becomes
<%= render :partial => "foo/bar" unless @conditions %>
Run Code Online (Sandbox Code Playgroud)
一种简单的方法是使用辅助方法.助手往往比在视图中直接放置逻辑更清洁.
所以,你的观点可能是这样的:
<%= render_stuff_conditionally %>
Run Code Online (Sandbox Code Playgroud)
你的助手会有一个方法来控制这个:
def render_stuff_conditionally
if @contional_check
render :partial => 'stuff'
end
end
Run Code Online (Sandbox Code Playgroud)
显然,事情的名称更合适
归档时间: |
|
查看次数: |
20609 次 |
最近记录: |