我需要在Rails表单中选择多项选择来创建新主题,在创建新主题时,用户可以从下拉菜单中选择语言。
Topic.rb
class Topic < ActiveRecord::Base
has_one :language
end
language.rb
class Language < ActiveRecord::Base
belongs_to :topic
end
我如何使用collection_select方法让用户选择语言?
主题数据库有一个language
字段。
语言数据库有一个name
字段,我希望显示给用户,permalink
字段,我希望它是存储在主题数据库中的下拉列表的值。
答案 0 :(得分:0)
collection_select(:topic, :language_id, Language.all, :permalink, :name)
答案 1 :(得分:0)
收藏选择
我的理解是collection_select
不依赖于您的关联
根据Rails Documentation,根据我们自己的经验,collection_select
功能可以使用“纯”数据,如下所示:
<%= subscriber.collection_select(:subscriber_id, Subscriber.where(:user_id => current_user.id), :id, :name_with_email, include_blank: 'Subscribers') %>
选择语言
在您的情况下,有几个问题需要解决
首先,您需要在foreign_key
数据库中更正topic
:
主题DB有一个语言字段
您的topic
数据库需要引用langugage_id
,如下所示:
id | language_id | created_at |的updated_at
完成此操作后,就意味着您可以使用topics
填充language_id
db,以使关系正常工作。我将这个collection_select用于此:
<%= form_for @topic do |f| %>
<%= f.collection_select(:langauge_id, Language.all, :id, :name, include_blank: 'Languages') %>
<% end %>