我不确定我在这里做的是否是最好的方法,但我有一块数据,我想在搜索完成后显示,而之前根本不在那里.首先,没有什么可显示的,其次,它引用的模型是nil,所以它会抛出一个异常.

我把这个块放在一个局部模板中,并将其添加到布局中的适当位置.有没有一种方法可以清晰地有条件地呈现部分内容?有没有更好的方法来解决这个问题?

推荐答案

Ruby允许你做这样的好事:

<%= render :partial => "foo/bar" if @conditions %>

为了让这篇文章更容易阅读和理解,它可以写成:

<%= render(:partial => "foo/bar") if @conditions %>

render是一个函数,你给它传递一个散列,告诉它渲染哪个部分.Ruby允许您将内容放在一行上(这通常会使它们更具可读性和简洁性,尤其是在视图中),因此if @conditions部分只是一个常规的if语句.也可以这样做:

<% if @conditions %>
  <%= render :partial => "foo/bar" %>
<% end %>

Edit:

Ruby还允许使用unless关键字代替if.这使得代码更具可读性,并且不必进行负面比较.

<%= render :partial => "foo/bar" if !@conditions %>
#becomes
<%= render :partial => "foo/bar" unless @conditions %>

Ruby-on-rails相关问答推荐

ruby on rails:错误未知关键字::当使用google-cloud-storage下载文件时,soft_deleted

使用超级用户角色和未知密码创建与POSTRES用户的连接

使用FactoryBot测试ActiveStorage的RSpec请求规范

链轮轨道V4链接到外部Ruby 的 list 文件

GO AES GCM加密在解密时出错&S

如何判断字符串中是否包含列值

如何将 ActionController::RoutingError 分类为 Sentry 中的错误

如何配置我的 Rails 应用程序(使用 Puma)以通过 HTTPS 提供服务?

ViewModel 和 Controller 有什么区别?

在 Rails 3 中,如何在路由中使用锚点作为 ID?

向现有控制器添加操作(Ruby on Rails)

ActiveRecord 回调列表

rspec 共享示例与共享上下文

是否可以在 Rails 中否定范围?

在 Rails 中将表格行变成链接

如何使用 Ruby 在现有 PDF 上编辑或书写?

RubyMine - 关闭在空行中间单击的功能

在 Rails 协会中未找到名为的协会可能拼写错误的问题

Rails 3 设计,current_user 在模型中不可访问?

Ruby 1.87 与 1.92 Date.parse