收件人清单与text_area表单

时间:2015-02-14 17:44:15

标签: ruby-on-rails ruby-on-rails-4

我正在努力实现一个表单,用户可以在该表单中撰写邮件,并从同一表单的清单中选择多个收件人。

我已经构建并测试了正在运行的消息传递系统,但现在我想为我想要的功能创建正确的表单。

当我使用多部分选择表单时,它工作正常,看起来像这样。

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

我的问题是获得此功能的最佳方式是什么?

如果您需要查看任何其他信息,请告诉我们,谢谢。

1 个答案:

答案 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 %>