在Rails表单中使用collection_select?

时间:2013-12-15 11:43:27

标签: ruby-on-rails forms form-for

我需要在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字段,我希望它是存储在主题数据库中的下拉列表的值。

2 个答案:

答案 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 %>