我想使它在表單中選擇字段中顯示的默認值是一個用戶參數,但問題是參數是一個嵌套的屬性。我不確定如何去做,到目前爲止我還沒有通過谷歌找到任何東西。如何在select標籤中設置默認的「selected」選項嵌套屬性的參數?
以下是我有:
<%= f.select :gender, options_for_select(['Male', 'Female']), { prompt: '--select gender--', selected: params[profile: [:gender]] }, { class: 'form-control' } %>
爲了澄清,Profile
是User
嵌套屬性。他們有一對一的關聯(Profile
屬於User
)。
我也試過只是把selected: params[:gender]
,但似乎也沒有工作。
下面是user_params(在用戶控制器):
def user_params
params.require(:user).permit(
:email, :password, :password_confirmation,
profile_attributes: [
:user_id, :first_name, :last_name, :gender, :date_of_birth,
:occupation, :education, :city, :post_code, :country
]
)
end
並在編輯和更新的方法(還包括用戶控制器):
# Edit profile page
def edit
@user = User.find(params[:id])
end
# Patch method for updating profile
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
這裏是形式是在視圖中,用戶/edit.html.erb
<% provide(:title, 'Edit profile') %>
<section>
<h3 class="pink-text"><i class="fa fa-pencil"></i> EDIT PROFILE</h3>
<%= render 'form' %>
</section>
用戶/ _form.html.erb:
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages' %>
<div class="form-group">
<h4>Account information</h4>
<%= f.label :email, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.email_field :email, class: 'form-control', placeholder: "[email protected]" %>
</div>
<%= f.label :password, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.password_field :password, class: 'form-control', placeholder: "A-Z,a-z,0-9" %>
</div>
<%= f.label :password_confirmation, "Confirm password", class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.password_field :password_confirmation, class: 'form-control', placeholder: "Confirm password" %>
</div>
</div>
<!-- Render profile form -->
<%= f.fields_for :profile, @user.profile do |profile| %>
<% render 'profile_fields', f: profile %>
<% end %>
<%= f.submit "Submit", class: "btn btn-primary" %>
<% end %> <!-- form_for @user -->
而且,用戶/ _profile_fields.html.erb
<div class="form-group">
<%= f.label :first_name, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.text_field :first_name, class: 'form-control', placeholder: 'First Name' %>
</div>
<%= f.label :last_name, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.text_field :last_name, class: 'form-control', placeholder: 'Last Name' %>
</div>
<%= f.label :gender, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.select :gender, options_for_select(['Male', 'Female']), { prompt: '--select gender--', selected: @selected }, { class: 'form-control' } %>
</div>
<%= f.label :date_of_birth, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.date_field :date_of_birth, class: 'form-control' %>
</div>
<%= f.label :occupation, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.text_field :occupation, class: 'form-control', placeholder: "Occupation" %>
</div>
<%= f.label :city, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.text_field :city, class: 'form-control', placeholder: "City" %>
</div>
<%= f.label :post_code, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.text_field :post_code, class: 'form-control', placeholder: "Post code" %>
</div>
<%= f.label :country, class: 'col-sm-2 control-label' %>
<div class="col-sm-10">
<%= f.country_select :country, { priority_countries: ["AU", "US", "GB", "CA", "NZ"], include_blank: true }, { class: 'form-control' } %>
</div>
</div>
你能顯示,你必須'視圖控制器動作<%= f.select:性別,options_for_select([ '男', '女']),{提示:'--select gender--',選中:params [profile:[:gender]]},{class:'form-control'}%>'? – Gerry
好的,添加它。 – xeno7