ruby - 在 Rails 中创建通用表单

标签 ruby ruby-on-rails-3 forms generics ruby-on-rails-3.2

我有一个具有属性(并非全部必需)的用户模型:名字、姓氏、生日、职业、宠物名。

注册时,用户需要输入名字和生日。

我想以某种方式获取为零的属性(在本例中为姓氏和职业)并随机选择其中一个并制作一个表格要求用户填写。

如果我做 @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/

相关文章:

Ruby OptionParser 空开关 "-"行为

ruby - 超薄模板,自定义 DOCTYPE

ruby - 如何使用 read、readpartial 和 read_nonblock 从 ruby​​ 中的 TCPServer 套接字读取

php - New Relic 如何运作?

ruby-on-rails - 是否有针对经验丰富的 Ruby 开发人员的 Rails 指南?

ruby-on-rails - number_to_currency 语言环境转换

android - 为什么使用输入标签在 chrome android 中显示我的页面时会得到不同的字体大小

Ruby-on-rails 4 性能低下

c# - 从另一个表单的 datagridview 获取值

c# - 如何将字符串添加到资源?