我想在我的rails项目中使用carmen-rails
gem,但是在github的文档中我无法理解如何使用它,所以我想:如果我希望我的用户有一个国家和州:
首先:我应该在我的用户模型(国家/地区)中添加 2列,对吗?
秒:将选择国家/地区和州添加到我的用户表单中:
<%= simple_form_for @user do |f| %>
<div class="field">
<%= f.label :country_code %><br />
<%= f.country_select :country_code, priority: %w(US CA), prompt: 'Please select a country' %>
</div>
<div class="field">
<%= f.label :state_code %><br />
<%= render partial: 'subregion_select', locals: {parent_region: f.object.country_code} %>
</div>
<% end %>
然后我的部分应该是这样的:
<div id="order_state_code_wrapper">
<% parent_region ||= params[:parent_region] %>
<% country = Carmen::Country.coded(parent_region) %>
<% if country.nil? %>
<em>Please select a country above</em>
<% elsif country.subregions? %>
<%= subregion_select(:order, :state_code, parent_region) %>
<% else %>
<%= text_field(:order, :state_code) %>
<% end %>
我是对的?
然后如何在提交表单时验证国家/地区和州?
最后如何改变选择形式的国家和州的语言(例如法语)?
答案 0 :(得分:1)
是的,是的。
看看他们的演示应用:https://github.com/jim/carmen-demo-app/
您需要添加路线以填充状态部分,然后添加适当的控制器方法以渲染部分。不要忘记先定义部分路由,然后再定义用户控制器路由。
e.g。 (routes.rb中)
get '/users/subregion_options' => 'users#subregion_options'
resources :users
e.g。 (users_controller.rb)
def subregion_options
render partial: 'subregion_select'
end
您需要添加一些JS以捕获国家/地区选择的更改事件,然后使用国家/地区代码调用用户控制器方法以将状态部分呈现。
e.g。 (users.js.coffee)
$ ->
$('select#user_country_code').change (event) ->
select_wrapper = $('#user_state_code_wrapper')
$('select', select_wrapper).attr('disabled', true)
country_code = $(this).val()
url = "/users/subregion_options?parent_region=#{country_code}"
select_wrapper.load(url)
您可以像往常一样处理用户模型类的验证。示例应用程序包含有关更改区域设置的信息。