gpt4 book ai didi

ruby-on-rails - Rails 中的 collection_check_boxes 从表单中获取结果

转载 作者:行者123 更新时间:2023-12-05 04:10:39 25 4
gpt4 key购买 nike

我找到了文档 collection check boxes很难理解。参数解释为:

collection_check_boxes(object, method, collection, value_method, text_method, options = {}, html_options = {}, &block) public

Returns check box tags for the collection of existing return values of method for object's class. The value returned from calling method on the instance object will be selected. If calling method returns nil, no selection is made.

我不确定“对象”(第一个参数)应该是什么。我尝试了两种不同的可能性,但都失败了。

<%= collection_check_boxes(:wiki, :collaborating_user_ids, User.all, :id, :name) do |b| %>
<li>
<%= b.check_box %>
<%= b.label %>
</li>
<% end %>

我的想法是我的应用程序支持编辑 wiki。我希望 wiki 所有者能够使用复选框在协作者列表中添加和删除用户(当然,这仅在用户数量较少时才实用,就是这种情况)。 collaborating_user_idsWiki 的实例方法,它返回当前的合作者列表。我想显示所有用户的名称,并选中当前的协作者。

这适用于显示,但是当我检查此表单返回的 params 时,没有显示选中了哪些复选框。另一方面,如果我用实例变量 @wiki 替换符号 :wiki,复选框会出现在与 wiki 关联的 params 中,但复选框最初设置不正确。

我实际上并不知道 collection_check_boxes 的第一个参数应该是什么,但我看到的每个示例都显示了一个符号。

最佳答案

假设您的关联设置正确。

对象应该是您正在编辑的模型。所以是的,你快到了。确保在 wiki Controller 的强参数中包含 collaborating_user_ids。这将允许 wiki 接受合作者

# inside your wiki controller
class WikisController < ApplicationController
def wiki_params
params.require(:wiki).permit(collaborating_user_ids: [], ...)
end
end

你的表单可能看起来像这样

<%= form_for @wiki do |f| %>
<%= f.collection_check_boxes :collaborating_user_ids, User.all, :id, :name %>
<%= f.submit %>
<% end %>

关于ruby-on-rails - Rails 中的 collection_check_boxes 从表单中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44099452/

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