首页 > 解决方案 > 如何使用表单在 Ruby on Rails 中设置参数值(对于 Scope)?

问题描述

我想在 ruby​​ on rails 的作用域的帮助下构建一个过滤器。

在我的控制器中,我有以下几行:

def index
  @carpools = Carpool.paginate(page: params[:page], per_page: 5)
  @carpools = @carpools.filter_by_locationFrom(params[:carpool_from]) if params[:carpool_from].present?
end

在我的模型中,我有以下几行:

scope :filter_by_locationFrom, -> (locationFrom) { where locationFrom: locationFrom }

在我看来(index.html.erb),我想要一个表单来输入locationFrom的值,以便控制器知道参数:locationFrom存在并且只选择指定的数据(具有locationFrom值)从数据库。

我尝试了几种表单格式,但都遇到了一些问题。我怎样才能制作这样的表格?这是我尝试过的表格:

<%= form_with(model: @carpool, method: "POST") do |f| %>
        <div class="form-group row">
          <%= f.label :locationFrom, class: "col-2 col-form-label text-light" %>
          <div class="col-10">
            <%= f.text_field :carpool_from, class: "form-control shadow rounded", placeholder: "From" %>
          </div>
        </div>

        <div class="form-group row justify-content-center">
          <%= f.submit("filter", class: "btn btn-outline-light btn-lg") %>
        </div>
      <% end %>

这给出了 400 bad request,说:

ActionController::ParameterMissing (param is missing or the value is empty: carpool):
app/controllers/carpools_controller.rb:20:in `create'

但我的表单在“索引”页面内,我不知道为什么它指的是“创建”

提前致谢!

标签: ruby-on-rails

解决方案


推荐阅读