过滤数据库输出rails

时间:2017-05-01 01:09:49

标签: ruby-on-rails

我对此有点迷失,所以我有活动喂宝石和设计宝石。

我希望能够列出指定用户发布的所有帖子

控制器

 def userstory
 @userstory = Story.where(params[:user_id])
 end

查看

<% @userstories = Story.where(:user_ud) %>

<% @userstories.each do |story| %>

我也认为我的路线错了

 match '/stories/userstory/:user_id',     to: 'stories#userstory',       via: 'get'
resources :stories, :only =>[:show]

2 个答案:

答案 0 :(得分:2)

首先,您需要确保stories的{​​{1}}列指向user_id。其次,您需要正确定义关联:

users

然后在您的控制器中添加:

class Story < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :stories
end

您应该可以在视图中引用# I'm assuming this is index on a controller. def index @stories = current_user.stories end

@stories

答案 1 :(得分:1)

通常你在Rails中使用表单来处理params,如果你不执行这样的操作(填写表格,发送它),你将无法处理它们。如果您尝试在视图中打印params[:user_id]的当前值,那么您可能会nil,这就是为什么当您尝试find故事时id在这种情况下为nil,然后您会得到一些回复。

尝试在您的控制器和相应的方法中指定@stories,然后在您的视图中使用它,可能像:

# app/controllers/stories_controller.rb
def some_method
  @stories = Story.find_by_id(params[:user_id])
  ...

据我所知,除了find_by _...和find_by _...之外的所有动态方法!自Rails 4版本以来已弃用,因此您可能希望使用find_bywhere代替(reference)。

看到你的路线然后我假设你在&#39; / stories / userstory / id&#39;在您的导航器中,您点击某个故事来显示它,然后您需要使用show中的StoriesController方法,以这种方式通过params[:user_id]找到这样的故事。