설명이 어려운데, 초보 실력으로 하다가 생긴 문제이다.
문제:
모델 A
모델 B의 button 이라는 항목은 모델 A의 객체를 References 로 가진다.
모델 B를 변경하는 update 명령이 controller 로 넘어올 때, 해당 cmd 값을 변경할 방법을 모르겠음.
그냥 하면 Object 대신에 String가 들어왔다고 에러
억지로 @button = Button.find(param[:command][:button]) 뭐 이런식으로 해서 할당해줘도 제대로 안된다.
해결:
애초에 form 문 내의 <input>태그의 id값이 잘못되었다.
그러니까
<p>
<%= f.label :button %><br />
<%= f.select :button, @buttons.map {|b| [b.title, b.id]} %>
</p>
가 아니고
<p>
<%= f.label :button %><br />
<%= f.select :button_id, @buttons.map {|b| [b.title, b.id]} %>
</p>
로 button_id로 해당 obj의 id값을 넘겨준다
그리고
입력에 넣어주는 param도
                params.require(:command).permit(:owner, :status, :button_id, :img_path, :audio_path)
이런식으로 button_id 를 넣어주면 된다.
출처: http://archive.railsforum.com/viewtopic.php?id=31815
Posted by Parker Falcon