【问题标题】:Rails Simple Form Country SelectRails 简单表单国家选择
【发布时间】:2015-06-27 04:11:28
【问题描述】:

我正在尝试使用 Rails 和带有国家/地区选择的简单表单制作应用程序。

我收到一条错误消息:

wrong number of arguments (4 for 0)

我正在使用我找到的示例,用于国家/地区选择 gem 文档页面上的简单表格。我不明白出了什么问题。

在我的模型中,我有:

     geocoded_by :address
  after_validation :geocode, if: ->(obj){ @obj.address.present? and @obj.address_changed? }


  def address
    [city, state, participation_country].compact.join(', ')
  end

在我的表格中,我有:

 <%= f.simple_fields_for :scope do |participants_s| %>
      <%= participants_s.simple_fields_for :participant do |par| %>
<%= par.select :participation_country,
                           priority: ["AU", "GB", "NZ", "US"],
                           selected: :participation_country,
                          label: false,
                          prompt: "Select participation country" %>

我在使用时遇到同样的错误

<%= par.input :participation_country,

在我看来,我有:

<%= @project.scope.participant.address %>

谁能看到我在尝试设置时做错了什么?错误消息表明有问题的行是:

<%= par.select :participation_country,

除了建议的国家/地区代码之外,我无法计算任何 4 个,尽管我删除了其中一个尝试并得到相同的错误。

当我尝试时:

          <%= par.country_select("participation_country", {:prompt => "Choose Country"})%>

我得到同样的错误:参数数量错误(4 代表 0)

我也尝试删除 country-select gem 并安装 country_select gem。使用简单形式的 country_select gem 的指南有这个例子:

country_select("user", "country", only: ["GB", "FR", "DE"])

但是,简单表单的示例应用程序显示为:

  <fieldset>
    <legend>With Only Chosen Countries</legend>
    <%= f.input :country_code, only: ["LV","SG"] %>
    <code>f.input :country_code, only: ["LV","SG"]</code>

当我尝试遵循示例应用程序以及指导样式时,我收到了无法识别方法的错误。

【问题讨论】:

  • 您的选择选项将从哪里出现?
  • 嗨,鸸鹋,你是什么意思?我认为这些是优先选择,并且我认为 country_select 提供了完整列表
  • 您可以轻松地使用 Country gem。简单的表单有一个集成和首选。
  • 嗨 Rubyrider - 我正在尝试使用简单的表单和国家/地区选择 gem。我不确定“国家宝石”是什么,但简单的形式建议使用国家选择,我就是这样做的。我一点也不觉得这很容易
  • 对不起,这是 country_select gem。

标签: ruby-on-rails simple-form


【解决方案1】:

我终于得到了这个工作。我删除了 country-select gem(建议与简单表单一起使用)并将其替换为 country_select gem。此 gem 的 wiki 不使用与 wiki 上链接的示例应用程序匹配的语法。

这条线最终对我有用:

<%= par.input :participant_country, priority: ["AU", "NZ", "GB", "US"], label: false %>

【讨论】:

    【解决方案2】:

    将 par.select 更改为 f.input

    <%= f.simple_fields_for :scope do |participants_s| %>
          <%= participants_s.simple_fields_for :participant do |par| %>
            <%= f.input :participation_country, as: :country, { priority_countries: ["AU", "GB", "NZ", "US"], selected: :participation_country }, { label: false, prompt: "Select participation country" } %>
    

    参考

    请参阅 simple_form 自述文件中的 Wrapping Rails Form Helpers 部分。

    【讨论】:

    • 嗨 Vamsi,我试过了,但我得到了这个错误:语法错误,意外',',期待 =>(类似于我在下面回应 Pavan 的建议时更详细地阐述的内容
    • 呈现表单,但下拉菜单中的选择选项有:“as”、“priority_countries”、“label”和“prompt”
    • 试试修改后的代码。我想应该是 f.input 而不是 par.input
    • 嗨 Varnsi,par 是我给 f 的名称,因为它嵌套在另一个表单中
    • 我试过了,我得到了这个错误:语法错误,意外',',期待 => ...cted: :participation_country }, { label: false, prompt: "Sel...
    【解决方案3】:

    应该是:

    <%= par.input :participation_country, as: :country,
                               priority_countries: ["AU", "GB", "NZ", "US"],
                               label: false,
                               prompt: "Select participation country" %>
    

    您不需要指定selected 选项,表单生成器会为您完成。

    参考资料:

    https://github.com/stefanpenner/country_select#usage

    How to list all countries in select using country_select gem with simple_form

    【讨论】:

    • 嗨 Nitish,我试过了,但我仍然收到此错误:参数数量错误(4 代表 0)
    • 这很奇怪。它对我有用。你把par.select改成par.input了吗?
    • 我确实更改为 par.input
    • par 到底是什么?我想不出任何接受 0 个参数的表单构建器方法。
    • par 是我设置的字段。我已将表格顶部添加到问题中
    【解决方案4】:

    试试下面的代码

    <%= par.input :participation_country, as: :country, { priority_countries: ["AU", "GB", "NZ", "US"], selected: :participation_country }, { label: false, prompt: "Select participation country" } %>
    

    参考:请参阅来自country_select 的提供额外的 html 选项部分。

    【讨论】:

    • 嗨,Pavan,我试过这个,但我得到了这个错误:语法错误,意外',',期待 => 我尝试用 => 替换 , 但它说它期待 },我尝试替换=> 与 } 并表示它期望在它之后没有任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多