Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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

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 简单表单具有且属于许多关联未更新_Ruby On Rails_Ruby On Rails 4_Associations_Simple Form - Fatal编程技术网

Ruby on rails 简单表单具有且属于许多关联未更新

Ruby on rails 简单表单具有且属于许多关联未更新,ruby-on-rails,ruby-on-rails-4,associations,simple-form,Ruby On Rails,Ruby On Rails 4,Associations,Simple Form,我有场地模型和照片: class Venue < ActiveRecord::Base has_and_belongs_to_many :photos validates :name, presence: true validates :permalink, presence: true, uniqueness: true def to_param permalink end end class Photo < ActiveRecord::Base

我有场地模型和照片:

class Venue < ActiveRecord::Base
  has_and_belongs_to_many :photos

  validates :name, presence: true
  validates :permalink, presence: true, uniqueness: true

  def to_param
    permalink
  end
end

class Photo < ActiveRecord::Base
  mount_uploader :image, PhotoUploader

  has_and_belongs_to_many :venues
end
上课地点
我使用simple_表单制作以下表单:

<div class="content-box">
  <%= simple_form_for [:admin, @venue] do |f| %>
    <%= f.input :name %>
    <%= f.input :permalink %>
    <%= f.input :description, input_html: { cols: 100, rows: 6 }%>
    <%= f.input :address %>
    <%= f.input :city %>
    <%= f.input :phone %>
    <%= f.association :photos %> 
    <%= f.button :submit, class: 'small radius' %>
  <% end %>
</div>

这是我的编辑和更新方法控制器:

class Admin::VenuesController < ApplicationController

  def edit
    @venue = Venue.find_by_permalink!(params[:id])
    @photos = @venue.photos.all
  end

  def update
    @venue = Venue.find_by_permalink!(params[:id])
    if @venue.update_attributes(venue_params)
      redirect_to edit_admin_venue_path(@venue), notice: 'Venue was successfully updated.'
    else
      render action: "edit"
    end
  end

  private

  def venue_params
    params.require(:venue).permit(:name, :permalink, :description, :address, :city, :phone, :photo_ids)
  end
end
class Admin::venuescoontroller

问题是,当我使用表单更新时,场馆模型的所有属性都会很好地更新,但照片ID不会更新或存储。我猜它很简单,但我不确定它是什么。我正在使用Rails 4,顺便说一句。

您需要允许
照片ID
作为
数组
,因为
照片ID在提交表单时作为
数组
传递。当前,
photo\u id
未得到更新,因为您不允许它们作为
数组

更新
场馆参数
,如下所示:

def venue_params
  params.require(:venue).permit(:name, :permalink, :description, :address, :city, :phone, :photo_ids => [])
end
注意:
:photo\u id=>[]
而不是
:photo\u id