2011-02-08 2 views
4

현재 저는 Rails 3에서 "sports-managing-and-results-gathering-app"와 같은 것을 만들고 있습니다.이 App에서는 여러 여러 결과 유형 (심장 박동, km 거리, 반복, ...)을 가질 수있는 연습. 그리고 선호하는 순서대로 결과 유형을 정렬 할 수 있어야합니다. 그래서, 이것은 고전적인 다 - 대 - 다 관계입니다."Association expected, got String"many-to-many 연관

나는 다음과 같은 마이그레이션 함께했다 :

이 formtastic 코드가 잘 작동
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 %> 

문제는이 코드와 나는 resulttypes을 정렬 할 수없는, 여기 각 운동은 각 결과 유형을 한 번만 가질 수 있습니다. (JQuery와 코드 제외)이에 resulttype 양식 코드 : 그래서 나는 formtastic 변경 여러 번 주문을 나는 "듀얼 목록 상자"가 이제

<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> 

을하고 나는이 특정 운동에 운동을 추가하는 방법 I 그것처럼. 내가 양식을 제출하면 는하지만, 나는이 오류가 난 그게 무슨 뜻인지 아무 생각이 없다 :

Resulttype(#-614051528) expected, got String(#-608366078)

제출 된 매개 변수는 다음과 같습니다

{"commit"=>"Create Exercise", 
    "authenticity_token"=>"v1l9zfxdxIJbdjZx6SsZ5tGuKMrlioBg+C9orSmVarA=", 
    "utf8"=>"✓", 
    "exercise"=>{"name"=>"dddd", 
    "beschreibung"=>"ddddd", 
    "resulttypes"=>["5", 
    "3", 
    "1"], 
    "active"=>"1"}} 

이 현재 나에게 미친 약간 드라이브를. 왜 이런 일이 발생했는지 알기를 바랍니다.

답변

5

이것은 전형적인 오류입니다 : setter association_ids=을 사용해야하는 ID를 설정하려면 레일즈에 association=의 객체 배열이 필요합니다. 따라서 다음과 같이 작성하십시오 :

<%= f.select :resulttypes_ids, .... %> 
+0

아, 정말 괴롭습니다. 답변 해 주셔서 감사합니다. 현재 작동 중입니다.) –