如何在rails 4的视图中使用has_scope gem?

时间:2015-02-14 20:00:02

标签: ruby-on-rails ruby-on-rails-4 has-scope

我试图添加一个可点击的链接,该链接将使用has_scope gem按字母顺序对链接页面进行排序。在我看来,我究竟想要做些什么呢?

模型Links.rb

 scope :abc, -> { order("links.title ASC") }


Links_Controller.rb

 has_scope :abc

 def index
    @links = apply_scopes(Link).all
 end


Index.html.erb

<div id="links-wrapper">
    <%= render partial: "shared/link", collection: @links %>
</div>


_link.html.erb

<div class="link">

    <a class="link-title" href="<%= link.url %>" target="_blank"><%= link.title %></a>


    <div class="link-printed-url"><%= link.url %></div>

    <p class="link-description"><%= link.description %></p>

    <div class="link-tags">
        <% link.tags.any? %>
            <% link.tags.each do |tag| %>
                <span class="label-tag">
                    <%= link_to tag_path(tag) do %>
                        #<%= tag.name %>
                    <% end %>
                </span>     
        <% end %>
    </div>


</div>

2 个答案:

答案 0 :(得分:1)

您需要将标题参数传递给范围。

将模型中的范围更改为scope :abc, -> title { order("links.title ASC") }

scope :abc, -> title { order(title: :asc) }

你可以在部分

中做这样的事情
  <div class="link">
    <a class="link-title" href="<%= link.url %>" target="_blank"><%= link.title %></a>


    <div class="link-printed-url"><%= link.url %></div>

    <p class="link-description"><%= link.description %></p>

  </div>
  <% end %>

  <div class="link-tags">
    <%= link_to 'Order ASC', tag_path(:abc => true) %>
  </div>

答案 1 :(得分:0)

由于has_scope使用url params,你需要在link_to上添加params

<%= link_to "title", links_path(abc: true) %>