在我网站的主页上,我想实现一个过滤器。用户有很多想法。在这个想法表中有一个名为" 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>
答案 0 :(得分:0)
检查你的link_to“iphone”它有root_path的路径,你也明确给出了控制器,动作。我认为如果你在用户模型中有想法的关系,你可以直接使用范围 current_user.ideas.iphone 不需要为此目的使用模型方法提要