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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/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
Activerecord 控制器中的Rails 4功能未运行_Activerecord_Ruby On Rails 4_Controller_Simple Form_Has Many Through - Fatal编程技术网

Activerecord 控制器中的Rails 4功能未运行

Activerecord 控制器中的Rails 4功能未运行,activerecord,ruby-on-rails-4,controller,simple-form,has-many-through,Activerecord,Ruby On Rails 4,Controller,Simple Form,Has Many Through,我有一些Rails4项目的代码。它使用active_record(mysql2),并且有一个has_many:through关系,当我通过rails c进行交互时(无论是在生产还是开发中),它都能正常工作。当我试图以表单形式提交关系时(我使用的是simple_表单),我似乎无法保存它 以下是我的信息当前的设置方式(仅显示片段,我无法真正显示整个源代码): 型号: 表格: 控制器: 我的问题似乎是控制器没有调用helper函数,请改为使用此函数: def create @resource =

我有一些Rails4项目的代码。它使用active_record(mysql2),并且有一个
has_many:through
关系,当我通过
rails c
进行交互时(无论是在生产还是开发中),它都能正常工作。当我试图以表单形式提交关系时(我使用的是simple_表单),我似乎无法保存它

以下是我的信息当前的设置方式(仅显示片段,我无法真正显示整个源代码):

型号: 表格: 控制器: 我的问题似乎是控制器没有调用helper函数,请改为使用此函数:

def create
  @resource = Resource.new(resource_params)    
  @resource.set_categories(params[:resource][:resource_category_ids])
  ..
end 
资源
模型中移动方法:

def set_categories(categories)

  # Clean out the existing categories (if there are any)
  unless new_record?
    unless resource_categories.blank?
      resource_categories.each do |category|
        resource_categories.delete(category)
      end
    end
  end

  unless categories.blank?
    categories.each do |category|
      unless category.blank?
        resource_categories << ResourceCategory.find(category)
      end
    end
  end
end

谢谢你的回复!我原以为这样就可以了,但不幸的是,这并不能解决问题。看起来正在发生的是清除类别的位正在运行(我在控制台中填充了一些,并通过编辑表单运行;关系按预期被清除),但它没有用新的类别填充
@resource.resource\u categories
关系。缩小了一些范围,但我仍然不明白为什么它不起作用。标记为正确。谢谢你和我在一起!不用担心,迈兰。很乐意帮忙:)
# POST /resources
# POST /resources.json
def create
  @resource = Resource.new(resource_params)
  set_categories(@resource, params[:resource][:resource_category_ids])

  respond_to do |format|
    if @resource.save
      format.html {
        redirect_to @resource, notice: 'Resource was successfully created.'
      }
      format.json {
        render action: 'show', status: :created, location: @resource
      }
    else
      format.html {
        render action: 'new'
      }
      format.json {
        render json: @resource.errors, status: :unprocessable_entity
      }
    end
  end
end

# PATCH/PUT /resources/1
# PATCH/PUT /resources/1.json
def update
  respond_to do |format|
    if @resource.update(resource_params)
      set_categories(@resource, params[:resource][:resource_category_ids])
      format.html {
        redirect_to @resource, notice: 'Resource was successfully updated.'
      }
      format.json {
        head :no_content
      }
    else
      format.html {
        render action: 'edit'
      }
      format.json {
        render json: @resource.errors, status: :unprocessable_entity
      }
    end
  end
end

# Never trust parameters from the scary internet, only allow the white list
# through.
def resource_params
  params.require(:resource).permit(
    :title, :slug, :ancestry, :status, :author_id, :published, :parent_id,
    :resource_category_ids, :preview, :body
  )
end

def set_categories(resource, categories)

  # Clean out the existing categories (if there are any)
  unless resource.resource_categories.blank?
    resource.resource_categories.each do |category|
      resource.resource_categories.delete(category)
    end
  end

  unless categories.blank?
    categories.each do |category|
      unless category.blank?
        resource.resource_categories << ResourceCategory.find(category)
      end
    end
  end
end
Resource.all.each do |resource|
  ResourceCategory.all.each do |category|
    resource.resource_categories << category
  end
end
def create
  @resource = Resource.new(resource_params)    
  @resource.set_categories(params[:resource][:resource_category_ids])
  ..
end 
def set_categories(categories)

  # Clean out the existing categories (if there are any)
  unless new_record?
    unless resource_categories.blank?
      resource_categories.each do |category|
        resource_categories.delete(category)
      end
    end
  end

  unless categories.blank?
    categories.each do |category|
      unless category.blank?
        resource_categories << ResourceCategory.find(category)
      end
    end
  end
end
def resource_params 
params.require(:resource).permit( 
:title, :slug, :ancestry, :status, :author_id, :published, :parent_id, 
 :preview, :body, :resource_category_ids => [] 
) 
end