Rails 4过滤主页上模型的Feed项

时间:2014-03-27 10:23:20

标签: ruby-on-rails-4 model filter filtering

在我网站的主页上,我想实现一个过滤器。用户有很多想法。在这个想法表中有一个名为" platform"的列,其中存储了其中一个字符串:" iPhone应用程序"," Android应用程序"或者" Web应用程序"确定想法的类型。

我希望用户能够根据平台过滤主页上的Feed项。

我已经在我的想法模型中制作了特定的范围(如下所示)。这些范围有效,因为我在控制台中对它们进行了测试。

理念模型

class Idea < ActiveRecord::Base
belongs_to :user

scope :iphone, -> { where(platform: 'iPhone application') } # All iphone ideas
scope :android, -> { where(platform: 'Android application') } # All android ideas
scope :web_app, -> { where(platform: 'Web Application') } # All webapp ideas

end

用户模型

class User < ActiveRecord::Base
has_many :ideas, dependent: :destroy

  def feed
    Idea.all
  end
end

静态页面控制器正如您在下面看到的那样,我可以轻松地执行此操作(针对特定平台过滤器的单独操作)我只是无法弄清楚如何将操作与一个下拉菜单,或者只在主页上加载iPhone创意的按钮。

class StaticPagesController < ApplicationController 

def home
 if signed_in?
  @idea  = current_user.ideas.build
  @feed_items = current_user.feed.paginate(page: params[:page])
 end
end

def home_iphone
 if signed_in?
  @idea  = current_user.ideas.build
  @feed_items = current_user.feed.iphone.paginate(page: params[:page])
 end
 render "static_pages/home"
end
end

首页在这里,您可以看到指向iphone创意的链接(暂时没有错误,但加载了所有想法,而不仅仅是iPhone创意)

<% if signed_in? %>
 <%= link_to "iPhone", root_path, :controller => :ideas_controller, :action =>  :home_iphone %>
 <div class="span8">
  <h3>All ideas</h3>
  <%= render 'shared/feed' %>
 </div>

1 个答案:

答案 0 :(得分:0)

检查你的link_to“iphone”它有root_path的路径,你也明确给出了控制器,动作。我认为如果你在用户模型中有想法的关系,你可以直接使用范围 current_user.ideas.iphone 不需要为此目的使用模型方法提要