すべてのムービーを選択したディレクターで表示します。ルートとコントローラは正常に動作します。ただし、表示されているフィルタリングされたムービーはすべて同じです。たとえば、私は2つの映画が同じ監督を持っている4つの映画があります。私が望むのは、ビューページにこれらの2つの異なるタプルを表示することですが、示されている2つのタプルは同じです。railsは共通の属性を持つタプルを返します
def find_movies_by_same_director
@movie = Movie.find(params[:id])
@director = @movie.director
if (not @director.nil?) and (not @director.empty?)
#@movies = Movie.find_all_by_director(@director) if (not @director.nil?) and (not @director.empty?);
@movies = Movie.find_by_sql("SELECT * FROM movies i WHERE i.director == '#{@director}'")
render :director
else
flash[:notice] = "'#{@movie.title}' has no director information"
redirect_to root_path
end
end
私は、方法、find_by_sqlとfind_by_allの両方を試してみてくださいタプルを見つけるために、彼らの両方が同じ結果を得る:これは、コントローラのコードです。 これは、ビューのコードです:
%tbody
- @movies.each do |movie|
%tr
%th= @movie.title
%th= @movie.rating
%th= @movie.release_date
私はレールに新たなんだ、ので、任意のコメントや提案が理解されるであろう。
が、6行目で検索を実行するより標準的なRailsの道は 'だろう@movies = Movie.where(監督:@director) '。あなたのビューで '@ director'を使う必要はないので、' director = @ movie.director'と '@movies = Movie.where(director:director)'を実行してください。 – moveson
それは動作します!ご返信ありがとうございました。 – kchen
それを聞いてうれしい。あなたは瞬間があるときに答えを受け入れてください。 – moveson