В настоящее время я создаю что-то вроде "спортивного приложения для управления и сбора результатов" в Rails 3. В этом приложении мне нужно создать несколько упражнений, которые сами по себе могут иметь несколько «типов результатов» (сердечный ритм, расстояние вкм, повторы, ...).И должно быть возможно расположить типы результатов в моем предпочтительном порядке.Итак, это классическое отношение «многие ко многим».
Я придумал следующие миграции:
class CreateExercises < ActiveRecord::Migration
def self.up
create_table :exercises do |t|
t.integer :user_id
t.string :name
t.text :beschreibung
t.integer :resulttype_id
t.boolean :active, :default => true
t.timestamps
end
end
def self.down
drop_table :exercises
end
end
class CreateResulttypes < ActiveRecord::Migration
def self.up
create_table :resulttypes do |t|
t.string :name
t.string :einheit
t.text :beschreibung
t.timestamps
end
end
def self.down
drop_table :resulttypes
end
end
class CreateExercisesResulttypesJoin < ActiveRecord::Migration
def self.up
create_table :exercises_resulttypes, :id => false do |t|
t.integer "exercise_id"
t.integer "resulttype_id"
end
add_index :exercises_resulttypes, ["exercise_id", "resulttype_id"]
end
def self.down
drop_table :exercises_resulttypes
end
end
, который прекрасно работает с этим формальным кодом:
<%= semantic_form_for(@exercise) do |f| %>
<%= f.inputs do %>
<%= f.input :name %>
<%= f.input :beschreibung %>
<%= f.input :resulttype %>
<%= f.input :active %>
<% end %>
<%= f.buttons %>
<% end %>
Проблема здесь в том, что с этим кодом я не могу отсортировать типы результатов, и каждое упражнение может иметь каждый тип результата только один раз.Поэтому я изменил код формы formtastic: resulttype на этот (кроме кода jquery):
<div id="conn_ctrl" class="float_left center">
<div class="float_left center">
<%= f.select :resulttypes, @resall.collect{|d| [d.name,d.id]}.sort, {}, { :multiple => true, :class => "conn_select" } %><br>
</div>
<div class="float_left center">
<%= f.select :resulttypes, '', {}, { :multiple => true, :id => "exercise_resulttypes_save", :class => "conn_select" } %><br>
</div>
<div style="clear: both"></div>
<%= tag("input", { :type => "button", :id => "remove", :class => "dualbuttons", :name => "", :value => "<<" }, false) %>
<%= tag("input", { :type => "button", :id => "add", :class => "dualbuttons", :name => "", :value => ">>" }, false) %>
<%= tag("input", { :type => "button", :id => "up", :class => "dualbuttons", :name => "", :value => "Up" }, false) %>
<%= tag("input", { :type => "button", :id => "down", :class => "dualbuttons", :name => "", :value => "Down" }, false) %><br>
</div>
<div style="clear: both"></div>
Теперь у меня есть «Двойной список», и я могу добавить упражнения к этой конкретной тренировке несколько раз и упорядочить какМне это нравится.НО, когда я отправляю форму, я получаю эту ошибку, и я понятия не имею, что это значит:
Resulttype (# - 614051528) ожидаемый, получил String (# - 608366078)
Представленные параметры:
{"commit"=>"Create Exercise",
"authenticity_token"=>"v1l9zfxdxIJbdjZx6SsZ5tGuKMrlioBg+C9orSmVarA=",
"utf8"=>"✓",
"exercise"=>{"name"=>"dddd",
"beschreibung"=>"ddddd",
"resulttypes"=>["5",
"3",
"1"],
"active"=>"1"}}
В настоящее время это немного сводит меня с ума.Я надеюсь, вы знаете, почему это происходит ...