0

そのため、ユーザーが曲をアップロードしてコメントできるアプリがあります。ただし、ジャンルのカテゴリを追加したいと思います。ユーザーが曲をアップロードすると、曲のジャンルを選択できるようになります。これは、検索を追加するときに役立ちます。

コードの概要については、www.github.com/apane/leap を参照してください。

ジャンルテーブルをデータベースに追加して、それを曲に関連付けると思います。

ジャンルは曲に属し、曲には多くのジャンルがあります。

しかし、その後、私は困惑しています。ジャンルのドロップダウンに入力するにはどうすればよいですか?

4

2 に答える 2

0
rails g model genre name
rails g model genre_song genre:belongs_to song:belongs_to
rake db:migrate

models/genre.rb

has_many :genre_songs
has_many :songs, through: :genre_song

models/song.rb

has_many :genre_songs
has_many :genres, through: :genre_song

def self.tagged_with(name)
  Genre.find_by_name!(name).songs
end

def tag_list
  genres.map(&:name).join(", ")
end

def tag_list=(names)
  self.genres = names.split(",").map do |n|
    Genre.where(name: n.strip).first_or_create!
  end
end

曲/index.html.erb

Genres: <%= raw song.genres.map(&:name).map { |t| link_to t, genre_path(t) }.join(', ') %>

曲/_form.html.erb

<div class="field">
  <%= f.label :tag_list, "Genres (separated by commas)" %><br />
  <%= f.text_field :tag_list %>
</div>

song_controller.rb

tag_list許可されたパラメータに追加

于 2013-07-31T21:32:27.370 に答える
0

ジャンル テーブルをデータベースに追加した後、次のようなことができます。

<%= collection_select(:song, :genre_id, Genre.all, :id, :name) %>

:song は、曲をアップロードするためのフォームを指します。

于 2013-07-31T21:08:50.293 に答える