我对此有点迷失,所以我有活动喂宝石和设计宝石。
我希望能够列出指定用户发布的所有帖子
控制器
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]
答案 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_by
或where
代替(reference)。
看到你的路线然后我假设你在&#39; / stories / userstory / id&#39;在您的导航器中,您点击某个故事来显示它,然后您需要使用show
中的StoriesController
方法,以这种方式通过params[:user_id]
找到这样的故事。