레일스를 사용하여 (텍스트) 메시징 앱을 작성하고 있습니다. 여러 사람에게 메시지를 보낼 수 있도록 nested_forms를 사용하고 있습니다.중첩 된 양식 (레일스)을 사용하는 이상한 방법
컨트롤러에서 새 Message 객체를 인스턴스화 한 다음 각 멤버에 대해 Recipient 객체 (Message의 자식)를 작성합니다. 양식에서 각 수신자 옆에 확인란을 표시합니다. 새 Message 객체가 옆에있는 수취인 만 가질 수있게하려고합니다. 이것은 작동하지 않습니다.
양식이 렌더링 될 때까지는 모든 구성원에 대해받는 사람 개체가 인스턴스화됩니다. 즉, 기본적으로 메시지가 지정되지 않는 한 각 회원에게 메시지가 전송됩니다.
class Message < ActiveRecord::Base
has_many :recipients
accepts_nested_attributes_for :recipients
#columns: body:string, from:string, from_member_id:integer
end
class Member < ActiveRecord::Base
#columns phone:string, name:string
end
class Recipient < ActiveRecord::Base
belongs_to :message
belongs_to :member
#columns: member_id:integer, message_id:integer
end
messages_controller.rb :하지만 사용자가 자신이 여기에
로 전송 된 메시지입니다 내 모델을 원하는 사람을 지정할 수 있도록 양식을 사용하려는def new
@message = Message.new
@members = Member.all
@members.each do |member|
@message.recipients << Recipient.new(:member_id => member.id)
end
end
def create
@message = Message.new(params[:message])
redirect_to '/somewhere'
end
...
을 그리고 여기 내있어 Message
(APP /보기/메시지/새/html.erb)
<%= form_for(@message) do |f| %>
<% if @message.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@message.errors.count, "error") %> prohibited this message from being saved:</h2>
<ul>
<% @message.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.fields_for :recipients do |builder| %>
<div class="field">
<input type="checkbox" value="<%= builder.object.member_id %>" name="recipients[id]" />
/*WHAT GOES ^^^HERE^^^? */
<%= builder.object.member.name %>
</div>
<% end %>
<div class="field">
<%= f.label :body %><br />
<%= f.text_field :body %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
번째의 라인 형태 댓글 전자 양식은 내가 문제가있는 곳입니다. 또한, 내가 MessagesController # create에서 일부 코드를 수정해야 할 수도 있지만, 어디서부터 시작해야할지 모르겠다.
작품을 완벽하게, 감사합니다! – user94154