如何在视图中使用“除非”关键字?

时间:2011-04-28 18:11:50

标签: ruby-on-rails-3

任何人都可以告诉我是否有像这样的东西替换Rail3:

<%= unless @page.new_record? || !@page.background_image? %>

bla 

<% end %>

我正在尝试仅在用户编辑时在表单上显示复选框。不是在他们创造的时候。

3 个答案:

答案 0 :(得分:2)

我认为该陈述没问题,但不应包含在您的视图中。相反,创建一个模型方法,可能名为is_editable?或其他东西,包括这个陈述。然后在控制器中获取一个实例变量并改为使用它。

观点中的逻辑是一个非常糟糕的主意:)

答案 1 :(得分:2)

你的错误包括红宝石代码中的=。

<% unless @page.new_record? || !@page.background_image? %>

  bla 

<% end %>

但是,正如其他用户所说,最好将此逻辑隐藏在模型中而不是视图中。此外,它被认为是仅使用的最佳实践,除非只有一个布尔语句。当你有ors和nots时,它开始变得越来越难以阅读。

<% if @page.is_editable %>
  blah
<% end %>

这将是一个更好的版本,甚至比那更好(取决于'blah'的复杂程度)将整个事物隐藏在辅助方法中。

<%= some_special_checkbox(f) %>

参数f将是表单对象,以便您的帮助程序可以呈现表单的复选框。

答案 2 :(得分:0)

你可以这样写:

<%= "bla" unless @page.new_record? || !@page.background_image? %>

可能你应该用更易读的名称编写单独的方法,并用一种​​方法替换这个条件。尽量让你的观点尽可能清洁