Rails 4:未定义的方法`permit' for" xxxx xxxx":String

时间:2015-04-26 14:50:09

标签: forms ruby-on-rails-4 params

我有一个搜索模型,我希望与太阳黑子一起使用来处理不同模型的所有搜索。在我开始之前,我已经陷入了困境。

以下是我网站上所有网页标题中显示的表单。

      <%= simple_form_for @search, :url => searches_path, :method => :post do %>
      <%= text_field_tag :search, params[:search] %>
      <%= submit_tag "Search", class: "btn btn-primary" %>
      <% end %>

在我的searching_controller中

 def search_params
     params.require(:search).permit(:search)
 end

在我的Search.rb

    attr_accessor :search

当我插入我的名字时,我收到此错误

   undefined method `permit' for "simon walsh":String

参数:

 {"utf8"=>"✓",
  "authenticity_token"=>"1Tez0pnMILEciLR6j+li+qSeO4NYBj3XsB6dYG07RymsiNUNSAGI5ztpMiD4JNAtTnqwJYdHTpPBRqGduWHjBw==",
  "search"=>"simon walsh",
   "commit"=>"Search"}

我很困惑。这显然是我发布params的方式的一个简单错误。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

使用此:

def search_params
    params.require(:search).permit!
end

而不是:

def search_params
    params.require(:search).permit(:search)
end

由于params["search"]中的字符串参数可能会发生此问题,而在控制器中使用.permit(:search),或者您的属性和型号名称相同。