簡體   English   中英

有條件的link_to做塊

[英]Conditional link_to do block

也許這比我想的要簡單,但是我在使它起作用時遇到了問題。 我有一個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',所以它仍在運行<%= @ animal.previous_animal.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 %>
<% if @animal.previous_animal %>
  <%= 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 %>
<% end %>

您的link_to if塊令人困惑,這會導致您出現問題,因為即使沒有記錄,您也會呈現內容。 我會這樣做:

#controller
@animal = Animal.find_by_id(params[:id])
@previous_animal = @animal && @animal.previous_animal
@next_animal = @animal && @animal.next_animal

#view
<% if @previous_animal %>
  <%= link_to(@previous_animal, {class: 'prev-page'}) do
    <span class="glyphicon glyphicon-chevron-left"></span> Meet <span class="name"><%= @previous_animal.name %></span>, the <%= animal_breed(@previous_animal) %>
  <% end %>
<% else %>
  <!-- anything you might want to render if there's no previous animal -->
<% end %>

另外,您的previous_animal方法也可以整理一下。

#model
def previous_animal
  Animal.order('created_at desc').where('created_at < ?', self.created_at).first
end

def previous_animal
  Animal.order('created_at').where('created_at > ?', self.created_at).first
end    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM