【问题标题】:Devise edit account information设计编辑账户信息
【发布时间】:2012-03-28 20:15:13
【问题描述】:

当我转到 Devise 提供的 edit_user_registration_path 时,我有诸如电子邮件和用户名等字段预填

我想创建具有类似表单的自定义用户配置文件页面,用于编辑包含依赖模型的附加字段的用户信息。我希望字段是预先填写的。 应该怎么做呢?

Devise提供的默认表单:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
  <%= devise_error_messages! %>

  <div><%= f.label :email %><br />
  <%= f.email_field :email %></div>

  <div><%= f.label :username %><br />
  <%= f.text_field :username %></div>

  <div><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
  <%= f.password_field :password, :autocomplete => "off" %></div>

  <div><%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %></div>

  <div><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
  <%= f.password_field :current_password %></div>

  <div><%= f.submit "Update" %></div>
<% end %>

【问题讨论】:

    标签: ruby-on-rails forms devise


    【解决方案1】:

    使用嵌套属性

    在您的设计用户模型中,如果您有其他依赖模型,您可以在这些模型之间添加关系,例如has_manybelongs_to。这样做:

    设计用户模型:

    accepts_nested_attributes_for :name_of_other_model

    然后在您的表单中,您可以使用 fields_for。 fields_for docs

    这也是here 的精彩 Railscast

    【讨论】:

    • 感谢您的回复。这几乎是我想要的。那么预填字段呢?当我将上面的表单放在我的自定义视图中时,与默认设计用户编辑页面不同,这些字段没有预先填写。
    • 如果您编辑的用户已经存在,那么在您的编辑视图中,与数据库关联的字段将被填充。在那个截屏视频中,所有内容都是关于创建新的模型对象,但如果你注意到他回去编辑问题时,信息仍然存在于可编辑的文本字段中。如果您在创建用户时想要在这些字段中添加一些东西,那么在您的模型中添加以您想要数据的属性命名的方法。如果您给我一些特定的东西,您正在寻找您想要添加的数据,我可以用该信息更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多