2017-05-01 5 views
1

Ich bin ein wenig verloren auf diese, so habe ich die Aktivität Feeds Edelstein und das Gerät Juwel.Filterung Datenbankausgänge Schienen

Ich möchte in der Lage sein, alle von einem bestimmten Benutzer vorgenommen Beiträge zur Liste

-Controller

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

Ansicht

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

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

Ich denke auch, meine Routen falsch sind

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

Versuchen mit Geschichte. wo (user_id: params [: user_id]) –

+0

Welche Rails-Version? –

+0

Stromschienen, und müssen Parameter [: user_id] im Controller definiert werden? – Jay

Antwort

2

Zuerst müssen Sie sicherstellen, dass stories eine user_id-Spalte hat, die auf users zeigt. Zweitens müssen Sie richtig Assoziationen definieren:

class Story < ActiveRecord::Base 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :stories 
end 

Dann in Ihrem Controller hinzufügen:

# I'm assuming this is index on a controller. 
def index 
    @stories = current_user.stories 
end 

sollten Sie in der Lage sein @stories in Hinblick auf die Referenz:

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

U Normalerweise behandeln Sie Params in Rails mit Formularen, wenn Sie solche Aktionen nicht ausführen (füllen Sie ein Formular aus, senden Sie es), werden Sie nicht in der Lage sein, mit ihnen umzugehen. Wenn Sie versuchen, in Ihrer Ansicht den aktuellen Wert Ihrer params[:user_id] zu drucken, erhalten Sie vielleicht nil, deshalb, wenn Sie versuchen, find eine Geschichte durch die id, die in diesem Fall nil ist, dann erhalten Sie einige Antwort.

Versuchen Sie @stories in Ihrem Controller und in dem entsprechenden Verfahren spezifiziert und es dann in der Ansicht verwenden, vielleicht wie:

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

nur zu erwähnen, soweit ich weiß, alle dynamischen Methoden mit Ausnahme find_by _... und find_by _...! sind seit der Version Rails 4 veraltet, also möchten Sie vielleicht stattdessen find_by oder where verwenden (siehe reference).

Sehen Sie Ihre Routen dann ich nehme an, Sie sind in ‚/ stories/User-Story/id‘ in Ihrem Navigator, und klicken Sie bitte auf irgendeine Geschichte, es zu zeigen, dann müssen Sie die Methode verwenden show in Ihrem StoriesController und auf diese Weise um eine solche Geschichte durch die params[:user_id] zu finden.

+0

Wie kann ich diese Methode aus meiner Sicht aufrufen? – Jay

+0

Können Sie Ihren Controller hinzufügen und anzeigen? –

+0

richtig das ist, was ich versuche, die Idee ist, wenn ich ein Benutzerprofil anzeigen Ich kann die Post-Geschichte dieses Benutzers sehen – Jay