嗨,亲爱的所有Rails社区。我使用城市国家的宝石为国家和州制作下拉菜单。我看过this tutorial和this 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”时,它现在没有得到状态。它看起来空了
您可以检查链接并告诉我为什么不起作用吗?
谢谢。
答案 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.select
和country
之类的ID。更改元素以使用Rails表单构建器state
标记后,ID将类似于f.select
和famous_person_country
。
在浏览器中检查您的html源(查看源),以查看表单中为select标签生成的ID,并相应地更新famous_person_state
JavaScript。它看起来应该像这样:
cities.js
希望这会有所帮助。