在Rails

时间:2016-12-12 21:22:57

标签: ruby-on-rails ruby forms

我正在构建一个跟踪音乐家的Rails应用程序。我希望每个用户在创建个人资料时能够从表单中选择他们喜欢的多个类型。我想将它存储在“genre”列中用户的“profile”表中。现在,我有这个,但它只允许我选择一个选项。我希望下拉列表允许多个选项。那可能吗?我确信这很简单。

<%= simple_form_for @profile do |f| %>
<%= f.input :genre, collection:['Rock','Blues','Jazz','Classical','Soul','R&B','Alternative', 'Other'], label: "Favorite Genres" %>

现在,流派是一个字符串。我需要传递数组吗?我该怎么办?

1 个答案:

答案 0 :(得分:0)

使用rails处理多项选择需要做两件事。

1)允许用户使用{:multiple => true}选项在表单上选择多个选项。

<%= simple_form_for @profile do |f| %>
<%= f.input :genre, collection:['Rock','Blues','Jazz','Classical','Soul','R&B','Alternative', 'Other'], label: "Favorite Genres", input_html:  {:multiple => true} %>

2)让您的控制器接受该值的参数数组。

def profile_params

  params.require(:profile).permit( :years_spent_playing, :user_id, :name, :bio, :age, :city, :state, :primary_instrument, :second_instrument, :third_instrument, :status, :looking_for, :image, :genre => [])

end

我不确定你的设置,但我觉得你可能没有正确的模型和关联设置来以理想的方式处理这个问题。我建议添加一个has_many :through association并将您的类型分解为单独的模型和表格。