gpt4 book ai didi

ruby-on-rails - 响应做格式问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:53 25 4
gpt4 key购买 nike

我有 2 个字段,例如州和城市。城市将根据相应的州加载。而且我的字段不是纯粹的 DropDown。它们就像一个具有自动完成功能的输入字段,允许我们选择多个选项(引用图片..)

screenshot1

screenshot2

这就是我加载状态的方式。

<%= jl.select :state_id,  State.all.map{|j| [j[:name], j[:id]]}, {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>

为了加载城市,我编写了 jquery,它发送一个 ajax 请求,然后将响应附加到它的成功函数中。

我的 Controller 就像

def update_city_select
@states = State.where(name: params[:name]).order(:id) unless params[:name].blank?
@cities = City.where(state_id: @states.first.id).order(:name) unless @states.first.id.blank?
respond_to do |format|
format.html { render layout: false }
format.js
format.xml
end
end

我的 update_city_select.html.erb 就像

<%= select_tag 'city_id', options_from_collection_for_select(@cities, "id", "name", @states), {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type City to Search'} %>

问题是我的终端总是出错..

(wrong number of arguments (4 for 1..3)):
1: <%= select_tag 'city_id', options_from_collection_for_select(@cities, "id", "name", @states), {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>

如果我删除 {} 表单 update_city_html 页面,它会正常工作。但我得到的只是一个简单的下拉列表,没有像我的第一张图片中的阿拉巴马州加利福尼亚州那样的输入字段。有什么办法可以解决这个问题。

最佳答案

我认为您的问题与您呈现表单的方式有关,而不是 Rails 中的 respond_to block 。我看到你正在使用 select2 :


select_tag

我认为您的 select_tag 没有被正确调用。这与您是否从 respond_to

调用正确的 content-type 无关

这看起来很明显,但事实是您正在独立于表单调用 select_tag,因此这将是问题的原因


options_from_collection_for_select

诚然,我对 select2 没有任何经验,但我一直在寻找,我认为您的问题可能与您的 options_from_collection_for_select 有关,以及您的{}:

<%= select_tag 'city_id', options_from_collection_for_select(@cities, "id", "name", @states), {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>

我会测试仅将 id 传递给 options_from_collection_for_select 的最后一个参数(以查看您发送整个对象是否会成为 Rails 的问题)


选择

Paul the octopus 所述,你调用 select_tag 基本上意味着你只有 have 3 arguments一起工作,而f.select有 4 个:

select_tag(name, option_tags = nil, options = {})

select(object, method, choices, options = {}, html_options = {})

表面层面的修复是使用带有新 select 标签的 form_builder 对象,而不是裸露的 select_tag:

#update_city_select.html.erb 
<%= form_for @instace_var_for_form do |jl| %>
<%= jl.select :city, options_from_collection_for_select(@cities, "id", "name", @states), {}, {class: 'select2', multiple: true, 'data-placeholder' => 'Type State to Search'} %>
<% end %>

#ajax
$(document).on("ajax:success", "select", function(data) {
//pull select form form
$("element").append(select);
});

关于ruby-on-rails - 响应做格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22707634/

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