在显示操作更新关联对象的 user_id 中搜索搜索
Ransack search in show action updates associated object's user_id
我想使用 Ransack gem 在用户的显示视图中搜索属于 user
的 operators
列表。但是我得到了一个完全出乎意料的结果。它为操作员更新 USER_ID。
查看:
我正在使用 Rails 5 和搜索 gem。我在用户的显示视图上有一个搜索表单。这是表格:
<%= search_form_for @q, url: current_user, class: "form-group input-group-btn" do |f| %>
当我搜索时,出现以下情况:
(0.5ms) BEGIN
SQL (0.9ms) UPDATE "operators" SET "user_id" = NULL WHERE "operators"."user_id" = AND "operators"."id" = 3 [["user_id", 3]]
(0.8ms) COMMIT
因此,此搜索表单正在更新关联对象的 user_id。
这是我在用户控制器中的显示操作:
def show
@user = User.find(params[:id])
@q = @user.operators.ransack(params[:q])
@user.operators = @q.result(distinct: true).order("created_at ASC")
end
这是完整的表格:
<%= search_form_for @q, url: current_user, class: "form-group input-group-btn" do |f| %>
<div class="input-group">
<%= f.search_field :name_cont_any, class: "form-control" %>
<span class="input-group-btn">
<%= button_tag( :class => "btn btn-primary") do %>
<i class='fa fa-search'></i>
<% end %>
</span>
</div>
<% end %>
仅发送@operators 变量
def show
@user = User.find(params[:id])
@q = Operator.where(user_id: current_user).ransack(params[:q])
@operators = @q.result(distinct: true).order("created_at ASC")
end
我想使用 Ransack gem 在用户的显示视图中搜索属于 user
的 operators
列表。但是我得到了一个完全出乎意料的结果。它为操作员更新 USER_ID。
查看:
我正在使用 Rails 5 和搜索 gem。我在用户的显示视图上有一个搜索表单。这是表格:
<%= search_form_for @q, url: current_user, class: "form-group input-group-btn" do |f| %>
当我搜索时,出现以下情况:
(0.5ms) BEGIN
SQL (0.9ms) UPDATE "operators" SET "user_id" = NULL WHERE "operators"."user_id" = AND "operators"."id" = 3 [["user_id", 3]]
(0.8ms) COMMIT
因此,此搜索表单正在更新关联对象的 user_id。
这是我在用户控制器中的显示操作:
def show
@user = User.find(params[:id])
@q = @user.operators.ransack(params[:q])
@user.operators = @q.result(distinct: true).order("created_at ASC")
end
这是完整的表格:
<%= search_form_for @q, url: current_user, class: "form-group input-group-btn" do |f| %>
<div class="input-group">
<%= f.search_field :name_cont_any, class: "form-control" %>
<span class="input-group-btn">
<%= button_tag( :class => "btn btn-primary") do %>
<i class='fa fa-search'></i>
<% end %>
</span>
</div>
<% end %>
仅发送@operators 变量
def show
@user = User.find(params[:id])
@q = Operator.where(user_id: current_user).ransack(params[:q])
@operators = @q.result(distinct: true).order("created_at ASC")
end