Rails 在 link_to 中更改 html 元素属性

Rails change html element attribute in link_to

我正在创建上一页按钮。这是我的按钮:

<li>
<%= link_to "Previous Page", titles_path(:page => @previous_page), class:"button big previous" %>
</li>

如果页面为 0,则应将其禁用。我的新按钮应该是这样的:

<li>
<%= link_to "Previous Page", titles_path(:page => @previous_page), class:"disabled button big previous" %>
</li>

我的意思是,我应该在 link_to 中使用 if-else,根据 if-else,我的代码应该更改按钮的 class。

我该怎么做?

您可以使用条件运算符 ? : 将内容直接插入到 class 字符串中:

<li>
<%= link_to "Previous Page", titles_path(:page => @previous_page), class:"#{@previous_page != '0' ? '' : 'disabled'} button big previous" %>
</li>

或简单地使用 <% if %> <% else %>:

<% if @previous_page != '0' %>
    <li>
    <%= link_to "Previous Page", titles_path(:page => @previous_page), class:"button big previous" %>
    </li>
<% else %>
    <li>
    <%= link_to "Previous Page", '', class:"disabled button big previous" %>
    </li>
<% end %>

按照 Tony 的建议使用条件,但 Tony 的方法有点缺陷,因为 0 在 Ruby 中不是假的。试试这个

= link_to 'Previous Page', titles_path(page: @previous_page), class: "#{(@previous_page == '0')  ? 'disabled' : ''} button big previous"

希望对您有所帮助!