gpt4 book ai didi

ruby-on-rails - 使用管理时添加请求参数时出现不允许的参数错误

转载 作者:行者123 更新时间:2023-12-04 17:35:53 29 4
gpt4 key购买 nike

我正在使用 Administrate v0.11.0使用 search_term 文本框,
它工作得很好,
现在我想添加一个请求参数 my_search_condition_flag这是一个影响搜索条件的 bool 标志值。

在我的 index Controller 的 Action ,
我添加了以下行,以便带有此参数的请求通过 Strong Parameters验证。

params.permit(:search, :my_search_condition_flag)

其余代码在 index操作只是从 ApplicationController.rb 复制而来的管理。

当我使用请求参数 my_search_condition_flag=1 发出 HTTP 请求时,
我的 index Action 处理得很好,
但 HTTP 响应返回以下错误:
ActionController::UnpermittedParameters in Admin::MyPage#index
Showing /usr/local/bundle/gems/administrate-0.11.0/app/views/administrate/application/_search.html.erb where line #19 raised:

found unpermitted parameter: :my_search_condition_flag

这是从 index.html.erb 中 search_term 文本框的呈现方法引发的
  <% if show_search_bar %>
<%= render(
"search",
search_term: search_term,
resource_name: display_resource_name(page.resource_name)
) %>
<% end %>

我已经在我的仪表板类中尝试了以下内容,介绍了 here :
 # -- Overwrite the method to add one more to the permit list
def permitted_attributes
super + [:my_search_condition_flag] # -- Adding our now removed field to thepermitted list
end

我如何告诉管理员允许我想添加的参数?

我是否必须使用请求 body反而? (我不想要)

最佳答案

你在那里走在正确的 rails 上。异常起源于 /app/views/administrate/application/_search.html.erb:19 ,正如你所说。如果你看那里,你会看到它使用方法 clear_search_params , 它还使用 strong_parameters 来允许/拒绝查询参数。您可以使用自己的助手覆盖它。例如:

module Admin
module ApplicationHelper
def clear_search_params
params.except(:search, :page, :my_required_condition_flag).permit(
:per_page, resource_name => %i[order direction]
)
end
end
end

如果你这样做,你会得到一个新的、相关的错误。这次来自 /app/helpers/administrate/application_helper.rb:48 .那里的方法称为 sanitized_order_params , 并且可以类似地被覆盖:

module Admin
module ApplicationHelper
# ...

def sanitized_order_params(page, current_field_name)
collection_names = page.item_includes + [current_field_name]
association_params = collection_names.map do |assoc_name|
{ assoc_name => %i[order direction page per_page] }
end
params.permit(:search, :my_required_condition_flag, :id, :page, :per_page, association_params)
end
end
end

有了这个,你应该清除错误。

诚然,这不是很好的修复。理想情况下,Administrate 应该提供一些更好的方法来覆盖这个允许的搜索参数列表。想提交 PR? ;-)

关于ruby-on-rails - 使用管理时添加请求参数时出现不允许的参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56607539/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com