我有用户模型
class User < ActiveRecord::Base
ROLES = %i[admin moderator author]
end
注册表单(最初由设计宝石生成):
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<!-- other fields -->
<div>
<%= f.label :role %><br />
<%= f.collection_select(:role, User::ROLES, :to_s, :humanize) %>
</div>
<div><%= f.submit "Sign up" %></div>
<% end %>
当尝试渲染此表单时,我收到错误消息:
undefined method `humanize' for :admin:Symbol
为什么第一种方法:to_s
没有被调用?
答案 0 :(得分:3)
为什么第一种方法:to_s没有被调用?
它是value_method
的{{1}},而不是collection_select
。看看documentation。
未定义的方法`人性化&#39; for:admin:Symbol
label_method
仅针对humanize
定义。试试这个:
string