Я пытаюсь создать форму модели, которая позволит мне добавлять ссылки по имени с помощью тега <select>
.Rails форму для создания модели со ссылкой
например.
В базе данных уже есть RefModels with ref_name = "a"
, ref_name = "b"
, ref_name = "c"
.
Форма:
<%= form_for @model %>
<%= f.label :ref_models, "Referenced Models:" %>
<%= f.select :ref_models, ["a","b","c"], {}, {:multiple => true} %>
Контроллер:
def create
@model = Model.new(model_params)
params[:model][:ref_models].each do |ref|
@ref = RefModel.where("ref_name = ?", ref)
@model.ref_models << @ref
end
respond_to do |format|
...
end
end
В моих журналах я получаю эту ошибку:
Started POST "/models" for 127.0.0.1 at 2013-06-25 16:20:48 -0300
Processing by ModelssController#create as JS
Parameters: {"utf8"=>"✓", "models"=>{..., "ref_models"=>["a", "b", "c"], ...}, "commit"=>"Create"}
Completed 500 Internal Server Error in 2ms
ActiveRecord::AssociationTypeMismatch (RefModel(#70144007274440) expected, got String(#70144005442620)):
app/controllers/models_controller.rb:52:in `create'
В чем проблема?
Примечание:
Я изменил фактические названия модели для «модели» и «ref_model» обобщать.
EDIT: ошибка происходит на этой линии:
@model = Model.new(model_params)