Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 Rails引导\表单集合选择_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails引导\表单集合选择

Ruby on rails Rails引导\表单集合选择,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正试图让我的引导程序\u表单集合\u select工作,但我遇到了一些困难。我使用引导4作为上下文 我有一个标签集合,我希望用户能够选择多个标签添加到单个事件中。我无法选择多个标记。当前,“选择”对话框将显示,其中包含“选择”对话框中的有效选项。我的提交也有问题 _form.html.erb: <%= f.collection_select :tags, Tag.all, :id, :name, hide_label: true, options: { placeholder: "Ta

我正试图让我的引导程序\u表单集合\u select工作,但我遇到了一些困难。我使用引导4作为上下文

我有一个标签集合,我希望用户能够选择多个标签添加到单个事件中。我无法选择多个标记。当前,“选择”对话框将显示,其中包含“选择”对话框中的有效选项。我的提交也有问题

_form.html.erb:

<%= f.collection_select :tags, Tag.all, :id, :name,  hide_label: true, options: { placeholder: "Tag Id", multiple: true}, html_options: { input_group_class: 'input-group-lg' } %>

Event.rb模型:

class Event < ApplicationRecord
    has_many :user_event_relationships
    has_many :users, through: :user_event_relationships
    has_and_belongs_to_many :tags
    has_one_attached :picture
    validates :name, :location, :date_to, :date_from, presence: true
    validate :valid_date_range_required
end

我解决了这个问题!我不得不在event_params中不允许标记作为参数,如下所示:

      params.require(:event).permit(:name, :date_from,
      :location, :date_to, :description, :picture)
相反,我在create controller中编写了一些代码,从tags字段中找到了标记,然后将它们添加到@event.tags中

这是代码:

def create
    tags = Tag.find(params.require(:event)['tags'])
    #puts "Params: #{params}"
    @event = Event.new(event_params)
    respond_to do | format |
      if @event.save
        results = Geocoder.search(@event.location)
        lat, long = results.first.coordinates
        @event.location_lat = lat
        @event.location_long = long
        tags.each {|tag|
          @event.tags << tag
        }
        #@event.save
        UserEventRelationship.create(event_id: @event.id, user_id: current_user.id, role_type_id: 0)
        format.html { redirect_to @event, notice: 'Event was successfully created.' }
        format.json { render json: @event, status: :created, location: @event }
      else
        format.html {render 'new'}
        format.json {render json: @event.errors, status: :unprocessable_entity }
      end
    end
  end

事件控制器中的第30行是哪一行?@event=event.newevent_参数如果是引导问题,请显示整个_form.html.erb。还有,这些标签是用来做什么的?你能把你的整个控制器文件贴出来吗。您的event_params方法似乎有问题
class CreateJoinTableEventsTags < ActiveRecord::Migration[6.0]
  def change
    create_join_table :events, :tags do |t|
       t.index [:event_id, :tag_id]
       t.index [:tag_id, :event_id]
    end
  end
end

NoMethodError - undefined method `each' for "10":String:
  app/controllers/events_controller.rb:30:in `create'

      params.require(:event).permit(:name, :date_from,
      :location, :date_to, :description, :picture)
def create
    tags = Tag.find(params.require(:event)['tags'])
    #puts "Params: #{params}"
    @event = Event.new(event_params)
    respond_to do | format |
      if @event.save
        results = Geocoder.search(@event.location)
        lat, long = results.first.coordinates
        @event.location_lat = lat
        @event.location_long = long
        tags.each {|tag|
          @event.tags << tag
        }
        #@event.save
        UserEventRelationship.create(event_id: @event.id, user_id: current_user.id, role_type_id: 0)
        format.html { redirect_to @event, notice: 'Event was successfully created.' }
        format.json { render json: @event, status: :created, location: @event }
      else
        format.html {render 'new'}
        format.json {render json: @event.errors, status: :unprocessable_entity }
      end
    end
  end