0
這是我的問題。 我有一個表與兩列id和名稱的角色。 列id通過外鍵鏈接到users表中的列role_id。列id和role_id的類型是整數。 在表中的角色我有這4個記錄:如何顯示字符串數組,但選擇數組中字符串索引的形式
id name
-- ----
1 owner
2 doctor
3 receptionist
4 customer
對於用戶我有一個表格編輯像admin和ROLE_ID的特權。 我想要顯示類似角色名稱的值,但是當我單擊提交按鈕時,我希望使用id或role_id整數值來更新客戶。
的user_controller.rb文件:
def show
@user = User.includes(:role).find(params[:id])
#@role = @user.role
end
def edit
@user = User.includes(:role).find(params[:id])
end
def update
@user = User.includes(:role).find(params[:id])
if @user.update_attributes(user_params)
flash[:success] = "User Priviladges Updated"
#log_in @user
redirect_to @user
else
render 'edit'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :role_id,
:password, :password_confirmation, :admin)
end
的edit.html.erb文件:
<h1>Edit User Privileges</h1>
<strong><%= "Name: " %></strong><%[email protected]%>
<br>
<strong><%= "Email: " %></strong><%[email protected]%>
<br>
<strong><%= "Role: " %></strong><%[email protected]%>
<br>
<strong><%= "Role ID: " %></strong><%[email protected]_id%>
<%= form_for(@user) do |f| %>
<div class="field">
<%= f.check_box :admin %>
<%= f.label :admin %>
</div>
<div class="field">
<%= f.label :role_id %>
<%=f.select :role_id, options_for_select([1,2,3,4], f.object.role_id), :include_blank => false %>
</div>
<div class="actions">
<%= f.button 'Submit', class: "btn btn-sm btn-info" %>
</div>
<br>
<strong><%= link_to 'Back', :back %></strong>
<% end %>
代碼工作和ROLE_ID值被正確地更新。然而,我怎樣才能在下拉選擇列表中顯示字符串而不是數字?