Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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_Strong Parameters - Fatal编程技术网

Ruby on rails 是否可以在Rails控制器中链接强参数

Ruby on rails 是否可以在Rails控制器中链接强参数,ruby-on-rails,strong-parameters,Ruby On Rails,Strong Parameters,我现在正在做这个 class DetailsController < ApplicationController def create @detail = Detail.new(params.require(:detail).permit(:user_id, :note)) if @detail.save redirect_to @detail else render 'new' end end def update

我现在正在做这个

class DetailsController < ApplicationController
  def create
    @detail = Detail.new(params.require(:detail).permit(:user_id, :note))
    if @detail.save
      redirect_to @detail
    else
      render 'new'
    end
  end
  
  def update
    @detail = Detail.find(params[:id])
    if @detail.update(detail_params)
      redirect_to @detail
    else
      render 'edit'
    end
  end
  
  private
  def detail_params
    params.require(:detail).permit(:note)
  end  
end
类详细信息控制器
Rails中的参数是否可能太强?我试着这么做,但没有成功

class DetailsController < ApplicationController
  def create
    @detail = Detail.new(detail_params.permit(:user_id))
    if @detail.save
      redirect_to @detail
    else
      render 'new'
    end
  end
  
  def update
    @detail = Detail.find(params[:id])
    if @detail.update(detail_params)
      redirect_to @detail
    else
      render 'edit'
    end
  end
  
  private
  def detail_params
    params.require(:detail).permit(:note)
  end  
end
类详细信息控制器
为了使事情干涸,我使用了方法并做了类似的事情

 def detail_params(is_create = false)
   params.require(:detail).permit(:note).tap do |p|
     p[:user_id] = current_user.id if is_create
   end
 end 

  def create
    @detail = Detail.new(detail_params(true))
    if @detail.save
      redirect_to @detail
    else
      render 'new'
    end
  end


  def update
    @detail = Detail.find(params[:id])
    if @detail.update(detail_params)
      redirect_to @detail
    else
      render 'edit'
    end
  end
为了得到不同的参数集,这是可行的

 def detail_params(is_create = false)
   permitted = [:note]
   permitted << :user_id if is_create
   params.require(:detail).permit(permitted)
 end 
def detail_参数(is_create=false)
允许=[:注]

你想完成什么?仅为创建而添加用户id?是:)完全正确。是否可以将
用户id
作为创建操作中允许的参数之一插入(而不是将其值设置为当前用户)?@vince,当然可以。甚至不需要水龙头。为答案添加了示例。