gpt4 book ai didi

javascript - 带有 mongoid embeds_many 嵌套文档的 fields_for

转载 作者:行者123 更新时间:2023-11-30 13:26:01 25 4
gpt4 key购买 nike

尝试使用此 railscast 作为指南: http://railscasts.com/episodes/197-nested-model-form-part-2?view=asciicast

遇到这个错误:

`@search[queries_attributes][new_queries][queries' is not allowed as an instance variable name

模型:

#search.rb
class Search
include Mongoid::Document
include Mongoid::Timestamps


belongs_to :user
field :name, :type => String

embeds_many :queries
accepts_nested_attributes_for :queries, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true

#query.rb
class Query
include Mongoid::Document

field :columns, :type => String
field :types, :type => String
field :keywords, :type => String

embedded_in :search, :inverse_of => :queries

end

搜索 Controller :

def new
@search = Search.new
@search.queries.build
#3.times { @search.queries.build }
end

_form.html.haml 部分:

= form_for(@search) do |f|
= f.label 'Name this search'
= f.text_field :name, :class => 'text_field'
= render :partial => 'query', :collection => @search.queries, :locals => { :f => f }
= link_to_add_fields "Add Query", f, :queries

.actions
= f.submit

_query.html.haml 部分:

.fields
= f.fields_for "queries[]", query do |q|

= q.label 'Search Datatype'
= q.select :types, Query::TYPES

= q.label 'In Column'
= q.select :columns, @search.record_columns

= q.label 'For Keywords:'
= q.text_field :keywords, :class => 'text_field'

= q.hidden_field :_destroy
= link_to_function "remove", "remove_fields(this)"

搜索助手:

module SearchesHelper

def link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render(association.to_s.singularize , :f => builder)
end
link_to_function(name, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")"))
end

end

JavaScript:

function remove_fields(link) {
$(link).prev("input[type=hidden]").val("1");
$(link).closest(".fields").hide();
}

function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g");
$(link).parent().before(content.replace(regexp, new_id));
}

当行:

= link_to_add_fields "Add Query", f, :queries

被注释掉了,它按预期工作,但我需要能够添加额外的查询通过这个助手。为了测试多查询,我在 Controller 中触发创建 3.times

同样在错误消息中最后一个“]”被剥离了..不知道我错过了什么

抱歉所有标签,但不确定问题出在哪里

最佳答案

看起来这是解决方法:

= f.fields_for :queries, query do |q|

关于javascript - 带有 mongoid embeds_many 嵌套文档的 fields_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8447632/

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