フォームの選択フィールドに表示されるデフォルト値がユーザーパラメーターであるようにしようとしていますが、パラメーターがネストされた属性であるという問題があります。私はそれについて行く方法がわかりません、そして、これまで私はGoogleを通して何かを見つけていません。ここでselectタグのデフォルトの 'selected'オプションをネストされた属性のパラメータにする方法はありますか?
は私が持っているものである。明確にするために
<%= f.select :gender, options_for_select(['Male', 'Female']), { prompt: '--select gender--', selected: params[profile: [:gender]] }, { class: 'form-control' } %>
、Profile
はUser
のネストされた属性です。彼らは1対1の関係を持っています(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ためのコントローラアクションを表示することができます: ' - :gender--'、selected:params [profile:[:gender]]}、{class: 'form-control'}%> '? – Gerry
さて、それを追加しました。 – xeno7