参数丢失或值为空:ad

时间:2019-05-10 08:47:15

标签: ruby-on-rails search ruby-on-rails-5

我有一个“广告”表,其属性包括标题

ads_controller.rb

def index
    if params[:title]
   @ad = Ad.where('title LIKE ?', "%#{params[:title]}%")
 else
   @ads = Ad.published.paginate(page: params[:page], per_page: 5)
 end
    @categories = Category.all
    @categorytypes = Categorytype.all
  end

Application.html.erb

  <%= form_tag(ads_path method: :get) do %>
             <%= text_field_tag :title, params[:title], class: 'form-control' %>
             <button type="submit" class="btn btn-default btn-xs"><i class="fa fa-search"></i></button>
            <% end %>

提交后,我收到一条错误消息:

参数丢失或值为空:ad def ad_params params.require(:ad).permit(:title, :description, :price, :location, :category_id, images: []) end 有解决方案吗?

1 个答案:

答案 0 :(得分:0)

提交表单时,未使用正确的params类型提交表单。在您的控制器中,由于params[:ad][:title]方法的原因,您期望它以ad_params的格式出现。但是您当前正在将参数获取为params[:title]。因此,这就是您面临此问题的原因。

现在进入解决方案,您可以这样更改表单的文本字段标签:

<%= text_field_tag "ad[title]", nil, class: "form-control" %>