2017-08-23 23 views
1

私はRoRを学ぶための簡単なウェブサイトを作っています。ユーザーはムービーのレビューを投稿できますが、ルートビューにリンクを実装して、データベース内のすべてのレビューを表示したいと考えています。それ、どうやったら出来るの?すべてのモデルですべての関連付けをロードするには

私は<%= link_to 'Reviews', reviews_path %>にできるようにしたいが、私のreviews#index URIパターンが/movies/:movie_id/reviews

私は、データベース内のすべてのレビューを抽出するために、私のレビューモデルに何を置けばいいのですか?

マイレビューコントローラ:

class ReviewsController < ApplicationController 
    def create 
    @movie = Movie.find(params[:movie_id]) 
    @review = @movie.reviews.create(review_params) 
    redirect_to movies_path(@movie) 
    end 

    private 
    def review_params 
    params.require(:review).permit(:email, :comment) 
    end 

end 

レビューモデル:

class Review < ApplicationRecord 
    belongs_to :movie 
end 

そして、私のルートビュー:

<h3>All Reviews:</h3> 
<!-- put link here --> 
<h3>Sort By:</h3> 
<p> 
    <%= link_to 'Release', movies_path(:sort_param => "release") %> 
    <%= link_to 'Title', movies_path(:sort_param => "title") %> 
</p> 

<h1>Popular Movies</h1> 
<% @movies.each do |m| %> 
    <h2>Title</h2> 
    <%= m.title %> 
    <%= m.release %> 
    <%= link_to 'Show', movie_path(m) %> 
<% end %> 

編集:私はthis解に見えたが、私はよく分かりませんそのコードをどこに置くか。私はレビューのインデックスメソッドでそれを入れてみましたが、私はエラーを得た:

Couldn't find all Reviews with 'id': (all, {:order=>"created_at DESC", :limit=>10}) 

答えて

0

あなたは、最新の順序で、任意のムービーからレビューをすべて表示する場合は、行うことができます:

class ReviewsController < ApplicationController 

    def index 
    @reviews = Review.order('created_at DESC').limit(10) 
    end 

    def create 
    ... 
    end 

end 
0

あなただけのroutes.rbファイルにreviewsにルートを追加することができます。あなたのroutes.rbを

resources :reviews, only: [:index] 

reviews_controller.rb

resources :reviews, only: [:index] 
+0

しかし、私は今レビュー#インデックスに関連する2つのURIパターンを持っています。 '/ movies /:movie_id/reviews'と'/reviews'それが正しいものになることをどうやって確認しますか? – Jason

関連する問題