我正在努力实现一个表单,用户可以在该表单中撰写邮件,并从同一表单的清单中选择多个收件人。
我已经构建并测试了正在运行的消息传递系统,但现在我想为我想要的功能创建正确的表单。
当我使用多部分选择表单时,它工作正常,看起来像这样。
<%= form_for @message do |f| %>
<div class="modal-body">
<%= f.text_area :body, class: "form-control"%>
</div>
<!-- displays the current users frinds their following -->
<%= f.select :user_tokens, @user.collect {|x| [x.name, x.id]}, {}, :multiple => true, class: "form-control" %>
<br>
<div class="modal-footer">
<%= f.button :submit, class: "btn btn-primary" %>
</div>
<% end %>
但是我希望在清单中显示用户,这是我到目前为止显示的所有内容都没有错误,但是却发送了消息。
<div class="results">
<%= form_tag new_message_path, method: 'get' do %>
<div class="modal-body">
<%= text_area :body, class: "form-control"%>
</div>
<table class="table-bordered">
<thead>
<tr>
<td class="col-md-1">Select</td>
<td class="col-md-1">User</td>
</tr>
</thead>
<% @user.each do |user| %>
<tbody>
<tr>
<td><%= radio_button_tag :user_tokens, user.id %></td>
<td><%= user.name %></td>
</tr>
</tbody>
<% end %>
</table>
<%= submit_tag "Send Message", :name => nil, class: "btn btn-primary" %>
</div>
<% end %>
</div>
这是我的控制器
class MessagesController < ApplicationController
before_action :authenticate_user!
def new
@message = Message.new
@user = current_user.following
@users = User.all
end
def create
@message = current_user.messages.build(message_params)
if @message.save
flash[:success] = "Message Sent!"
redirect_to messages_path
else
flash[:notice] = "Oops!"
render 'new'
end
end
def index
@user = User.find(current_user)
@messages = Recipient.where(:user_id => @user).order("created_at DESC")
end
private
def message_params
params.require(:message).permit(:body, :sender_id, user_tokens: [])
end
end
我的问题是获得此功能的最佳方式是什么?
如果您需要查看任何其他信息,请告诉我们,谢谢。
答案 0 :(得分:1)
我最终搞清楚了。感谢我之前发布的帖子rails 3 has_many :through Form with checkboxes。
<%= form_for @message do |f| %>
<%= f.text_field :body %>
<p>
<% @user.each do |user| %>
<div>
<%= check_box_tag "message[user_tokens][]", user.id, @message.users.include?(user) %>
<%= user.name %>
</div>
<% end %>
</p>
<p><%= f.submit %></p>
<% end %>