我正在使用Embedded Ruby
和Rails 4
來創建和編輯用戶。每個用戶都必須在創建時分配一個角色。最初,表單使用複選框,並且工作正常。然而,當切換到單選按鈕時,我收到一個錯誤。ERB導致字符串錯誤的單選按鈕
這是形式:
<%= simple_form_for(@user, html: {class: 'form-horizontal'}) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :name, autofocus: true %>
<%= f.input :email %>
<%= f.input :phone_number %>
<%= f.input :institution_pid, collection: institutions_for_select, as: :select, label: "Institution" %>
<%= f.association :roles, collection: roles_for_select, as: :radio_buttons %>
<%= f.input :password %>
<%= f.input :password_confirmation %>
</div>
<br>
<div class="form-actions">
<%= button_tag(type: 'submit', class: "btn doc-action-btn btn-success") do %>
<i class="glyphicon glyphicon-check"></i> Submit
<% end %>
<%= link_to @user, {class: "btn doc-action-btn btn-cancel"} do %>
<i class="glyphicon glyphicon-remove"></i> Cancel
<% end %>
</div>
我專門問了f.association
位。之前,當我使用
as: :check_boxes
它的工作原理與它應該完全相同。現在我收到此錯誤消息:
NoMethodError in UsersController#update
undefined method `reject' for "77":String
我應該注意「77」是單選按鈕選項之一的值。
的方法引發錯誤是這樣的:
def build_role_ids
[].tap do |role_ids|
roles = Role.find(params[:user][:role_ids].reject &:blank?)
roles.each do |role|
authorize!(:add_user, role)
role_ids << role.id
end
end
end
使用單選按鈕時,HTML看起來像這樣:
<label class="radio">
<input class="radio_buttons optional" id="user_role_ids_77" name="user[role_ids]" type="radio" value="77">
"Institutional Admin"
</label>
使用複選框:
<label class="checkbox">
<input class="check_boxes optional" id="user_role_ids_77" name="user[role_ids][]" type="checkbox" value="77">
"Institutional Admin"
</label>
如果我錯過了一些東西,或者你需要更多的信息,請讓我知道。謝謝!
我不得不做更多一點的方法編輯,而不僅僅是從數組更改爲字符串,但一般想法的工作。謝謝! – user3254621