我正在使用Rails 4制作应用程序。
我使用gem'country_select'作为国家/地区列表。
此表单中的最后一个问题是选择一个国家/地区的选择字段。
列表填写正常。但是,当我按表单上的提交时,我会收到一条错误消息,指出国家不能为空。
我在地址模型中进行了验证:
validates_presence_of :street_number, :street, :zip, :country
但是我看不出表单有什么问题让select函数不选择国家。
<%= simple_form_for(@address) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<div class="row">
<div class="col-xs-3">
<%= f.input :unit %>
</div>
<div class="col-xs-3 col-xs-offset-1">
<%= f.input :street_number %>
</div>
<div class="col-xs-3 col-xs-offset-1">
<%= f.input :street %>
</div>
</div>
<div class="row">
<div class="col-xs-3">
<%= f.input :building %>
</div>
<div class="col-xs-3 col-xs-offset-1">
<%= f.input :city %>
</div>
<div class="col-xs-3 col-xs-offset-1">
<%= f.input :region %>
</div>
</div>
<div class="row">
<div class="col-xs-3">
<%= f.input :zip %>
</div>
<div class="col-xs-3 col-xs-offset-1">
<%= f.input :country, priority: [ "Australia", "New Zealand", "United Kingdom" ] %>
</div>
从MarsAtomic那里得到以下建议,我的哈希表明国家选择在创建哈希中:
--- !ruby/hash:ActionController::Parameters
utf8: "✓"
authenticity_token: Jax0qIsyVj2V5CeK01ee79Ctmmmm7nqob8FRwS7KDIgGnRaNDR8A==
address: !ruby/hash:ActionController::Parameters
unit: ''
street_number: '23'
street: asdf
building: ''
city: asdf
region: pdf
zip: '2000'
country: NZ
main_address: '0'
project_offsite: '0'
commit: Create Address
controller: addresses
action: create
我的控制器有这个创建方法:
def create
@address = Address.new(address_params)
authorize @address
respond_to do |format|
if @address.save
format.html { redirect_to @address, notice: 'Address was successfully created.' }
format.json { render :show, status: :created, location: @address }
else
format.html { render :new }
format.json { render json: @address.errors, status: :unprocessable_entity }
end
end
end
谢谢!我是个傻瓜。在控制器中他强大的参数让我拼错了国家。对不起大家。谢谢你的帮助。