我有一个具有属性(并非全部必需)的用户模型:名字、姓氏、生日、职业、宠物名。
注册时,用户需要输入名字和生日。
我想以某种方式获取为零的属性(在本例中为姓氏和职业)并随机选择其中一个并制作一个表格要求用户填写。
如果我做 @user.attributes.map{|k,v| v==零? k : nil}.compact
我可以获得 nil 的属性。
如何使表单足够通用,以便此方法可用于任何属性?
最佳答案
您可以在 Controller 操作中填写@field 以显示附加字段的表单,然后显示该字段的表单:
# controller action
def additional_form
@field = @user.attributes.select{|k,v| v.nil?}.keys.sample
if request.post?
@user.update_attributes(params[:user]) and redirect_to root_path
end
end
# view for this action (additional_form.html.erb)
<%= form_for @user do |f| %>
<%= f.text_field @field %>
<%= f.submit %>
<% end %>
关于ruby - 在 Rails 中创建通用表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13013846/