Rails:城市状态的宝石“ f.select”问题,用于从所选国家/地区获取数据状态

时间:2018-09-26 16:35:51

标签: ruby-on-rails

嗨,亲爱的所有Rails社区。我使用城市国家的宝石为国家和州制作下拉菜单。我看过this tutorialthis github samples。在示例代码中,就像是belov;

 <div class="field">
  <!-- Country -->
  <%= f.label :country %>
  <%= selected_tag :country, options_for_select(CS.countries.map { |c| [c[1], c[0]] } ) %>
</div>

<div class="field">
  <!-- State -->
  <%= label_tag :state %>
  <%= selected_tag :state, options_for_select([]) %>
</div>

因此我将“ selected_tag”名称更改为“ f.selected”

<div class="field">
      <!-- Country -->
      <%= f.label :country %>
      <%= f.select :country, options_for_select(CS.countries.map { |c| [c[1], c[0]] } ) %>
    </div>

    <div class="field">
      <!-- State -->
      <%= label_tag :state %>
      <%= f.select :state, options_for_select([]) %>
    </div>

它现在不起作用。

关于问题的详细信息:当您选择任何国家时,它是从国家获得状态。但是当我将名称从“ selected_tag”更改为“ f.select”时,它现在没有得到状态。它看起来空了

您可以检查链接并告诉我为什么不起作用吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

当您将字段从public String presignedPutObject(String bucketName, String objectName, Integer expires) throws InvalidBucketNameException, NoSuchAlgorithmException, InsufficientDataException, IOException, InvalidKeyException, NoResponseException, XmlPullParserException, ErrorResponseException, InternalException, InvalidExpiresRangeException { if (expires < 1 || expires > DEFAULT_EXPIRY_TIME) { throw new InvalidExpiresRangeException(expires, "expires must be in range of 1 to " + DEFAULT_EXPIRY_TIME); } String region = getRegion(bucketName); Request request = createRequest(Method.PUT, bucketName, objectName, region, null, null, null, "", 0); HttpUrl url = Signer.presignV4(request, region, accessKey, secretKey, expires); return url.toString(); } 更改为select_tag时,您正在更改选择元素的html id和名称。 f.select将生成一个ID和名称,该ID和名称以传递给表单的模型为前缀。您的JavaScript会寻找f.selectcountry之类的ID。更改元素以使用Rails表单构建器state标记后,ID将类似于f.selectfamous_person_country

在浏览器中检查您的html源(查看源),以查看表单中为select标签生成的ID,并相应地更新famous_person_state JavaScript。它看起来应该像这样:

cities.js

希望这会有所帮助。