Ruby on rails 无法在参数中定义散列,请为和rails 5使用字段_

Ruby on rails 无法在参数中定义散列,请为和rails 5使用字段_,ruby-on-rails,ruby,nested-attributes,filterrific,Ruby On Rails,Ruby,Nested Attributes,Filterrific,我正在尝试向rails作用域提交2个值。我需要半径(提交范围标签)和邮政编码 我有一个表单中标记的字段(在haml中): 范围: scope :postcode, lambda {|input| return nil if input.blank? terms = Scotland.near(input[0], input[1]) where( terms.map { |term| " charity_id = ?" }.join(' OR '), *terms.map {|e|(e.

我正在尝试向rails作用域提交2个值。我需要半径(提交范围标签)和邮政编码

我有一个表单中标记的字段(在haml中):

范围:

scope :postcode, lambda {|input|
return nil  if input.blank?

terms = Scotland.near(input[0], input[1])

where(
terms.map { |term|
  " charity_id = ?"
}.join(' OR '),
*terms.map {|e|(e.charity_id)}.flatten
)
}
控制器:

    def scotland_params
      params.require(:scotland).permit!(:charity_number, :charity_name, :registered_date, :known_as, :charity_status, postcode: [:postcode_d,:max_range] , :constitutional_form)
    end
问题似乎出在我对邮政编码的定义上。我尝试了多种方法来定义邮政编码散列,但都没有成功。对于我在这里使用的那个,错误是

SyntaxError 

    (/Users/peterkentish/Documents/UNIVERSITY/SecondYear/Semester2/SoftwareHut/project/app/controllers/scotlands_controller.rb:46: syntax error, unexpected =>
..., :charity_status, postcode: =>[:postcode_d, :max_range] , :...
...                               ^
/Users/peterkentish/Documents/UNIVERSITY/SecondYear/Semester2/SoftwareHut/project/app/controllers/scotlands_controller.rb:46: syntax error, unexpected ',', expecting keyword_end
...: =>[:postcode_d, :max_range] , :constitutional_form, :previ...
...                               ^):
TL;博士 如何在rails 5中传递嵌套属性

编辑:

params散列(我认为):


真正的问题是,为什么每个人在写强参数时都会发疯,把整个定义塞进一行

不可读的代码是您获取错误的方式

def scotland_params
  params.require(:scotland).permit(
    :charity_number, :charity_name, :registered_date, 
    :known_as, :charity_status, :constitutional_form,
    postcode_attributes: [:postcode_d, :max_range]
  )
end

我相信你会想将
:postcode=>[:postcode\u d,:max\u range]
包装在
{…}
中,或者将
:postcode=>[:postcode\u d,:max\u range]
移动到
许可证的末尾参数列表


SyntaxError
是Ruby,在解释代码时,在
:postcode
散列之后不需要任何内容,因为没有显式的
{…}

如果有人遇到这个问题,gem filterrific中有一个bug:


感谢那些帮助过我的人

Hmm尝试一下
postcode:[:postcode\u d,:max\u range]
而不是
postcode\u attributes
同样的问题不幸的是,我已经被困在这个问题上很久了,再次感谢。有些地方说应该是
:postcode=>[:postcode\u d,:max\u range]
,但这也不起作用。你可以在问题中添加参数散列吗?添加,我想这就是你的意思吗?不-查看运行
rails服务器的控制台中的日志或输出
-你应该会看到传入参数的散列。
@scotlands = Scotland.all
@filterrific = initialize_filterrific(Scotland, params[:filterrific]) or return
 @scotlands = @filterrific.find.page(params[:scotlands])
@scotlands = @scotlands.paginate(page: params[:page], per_page: 20)

respond_to do |format|
format.html
format.js
def scotland_params
  params.require(:scotland).permit(
    :charity_number, :charity_name, :registered_date, 
    :known_as, :charity_status, :constitutional_form,
    postcode_attributes: [:postcode_d, :max_range]
  )
end