2017-05-01 66 views
1

我有點失落,所以我有活動飼料寶石和設計寶石。過濾數據庫輸出軌道

我想有列出由指定用戶發佈的所有信息的能力

控制器

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] 
+3

嘗試用故事。在哪裏(user_id:params [:user_id]) –

+0

哪個Rails版本? –

+0

電流軌,和params [:user_id]需要在控制器中定義? – Jay

回答

2

首先,您需要確保storiesuser_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

<%= @stories.each do |story| %> 
    <!-- RENDER story HERE --> 
<% end %> 
1

U如果你沒有執行這樣的操作(填寫表單,發送它),你將無法處理它們。如果您嘗試在您的視圖中打印您的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)。

看到您的路線,我假設您在導航器中的'/ stories/userstory/id'中,然後單擊某個故事以顯示它,然後您需要在StoriesController中使用show方法,通過params[:user_id]找到這樣的故事。

+0

另外我如何在我看來稱這種方法? – Jay

+0

你可以添加你的控制器和視圖嗎? –

+0

正確的是我正在嘗試,這個想法是當我正在查看用戶的個人資料,我可以看到該用戶的發佈歷史 – Jay