【发布时间】:2014-10-02 13:31:33
【问题描述】:
也许这比我想象的要简单,但我在让它工作时遇到了问题。我有一个 link_to 块
<%= link_to(@animal.previous_animal, {class: 'prev-page'}) do
<span class="glyphicon glyphicon-chevron-left"></span> Meet <span class="name"><%= @animal.previous_animal.name %></span>, the <%= animal_breed(@animal.previous_animal) %>
<% end %>
但如果previous_animal 存在,我只想显示链接
def previous_animal
animal = self.class.order('created_at desc').where('created_at < ?', self.created_at)
animal.last if animal
end
通常在link_to中我可以做到
<%= link_to(@animal.previous_animal) if @animal.previous_animal %>
但是当我添加 if 子句时,我得到了未定义的方法 'name',所以它仍在运行 ,即使我认为它在 if 语句中?
<%= link_to(@animal.previous_animal, {class: 'prev-page'}) if @animal.previous_animal do
<span class="glyphicon glyphicon-chevron-left"></span> Meet <span class="name"><%= @animal.previous_animal.name %></span>, the <%= animal_breed(@animal.previous_animal) %>
<% end %>
【问题讨论】:
-
您应该在控制器中定义
@animal、@previous_animal和@next_animal。然后你的逻辑可以查询这些变量。您也可以一键加载它们。 -
喜欢@previous_animal = Animal.previous_animal?举个例子
-
@previous_animal = @animal.previous_animal
标签: ruby-on-rails ruby ruby-on-rails-4