Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 集合选择,多个为true,提交数组_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 集合选择,多个为true,提交数组

Ruby on rails 4 集合选择,多个为true,提交数组,ruby-on-rails-4,Ruby On Rails 4,我正在使用form_for collection_select方法,将multiple设置为true。 当我提交表单时,receiver_id被设置为散列中的数组值,因此我得到一个错误,说receiver_id不能为空,因为在create操作中没有传递它 我想我需要将数组值转换为字符串,以便在创建操作中传递它 我的代码如下所示: <%= f.collection_select :receiver_id, receivers, :id, :email, {include_hidden: fa

我正在使用form_for collection_select方法,将multiple设置为true。 当我提交表单时,receiver_id被设置为散列中的数组值,因此我得到一个错误,说receiver_id不能为空,因为在create操作中没有传递它

我想我需要将数组值转换为字符串,以便在创建操作中传递它

我的代码如下所示:

<%= f.collection_select :receiver_id, receivers, :id, :email, {include_hidden: false, include_blank: true}, {class: 'form-control', multiple: true} %>

def message_params
params[:message].permit(:body, { receiver_id: [] })
end

def create
@message = current_user.messages.create(message_params)
end

经过更多的挖掘,我发现下面的方法是有效的,我不知道这是否是最佳的,或者是否有一个更整洁的方法,但目前它工作得很好

def create
  message_params[:receiver_id].each do |message|
    if !message.empty?
      @message = current_user.messages.create(body: message_params[:body], receiver_id: message)
    end
  end
  respond_with message, location: messages_url
end
youtube上的这段视频有这样一个想法:

可能是重复的
def create
  message_params[:receiver_id].each do |message|
    if !message.empty?
      @message = current_user.messages.create(body: message_params[:body], receiver_id: message)
    end
  end
  respond_with message, location: messages_url
end