我有3个型号USER,EXPERT,HELPEE,如下面的屏幕截图所示:
我在用户模型上使用设计。
关系
class Expert < ActiveRecord::Base
belongs_to :user
class Helpee < ActiveRecord::Base
belongs_to :user
class User < ActiveRecord::Base
has_one :expert
has_one :helpee
我使用以下代码进行注册,效果非常好:
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :name %><br />
<%= f.text_field :name, :autofocus => true, :class => "form-control" %></div>
<div><%= f.label :email %><br />
<%= f.email_field :email, :class => "form-control" %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password, :class => "form-control" %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, :class => "form-control" %></div>
<br>
<div><%= f.hidden_field :role, value: "helpee" %><br />
<div><%= f.submit "Sign Up" , :class => "btn btn-primary"%></div>
<% end %>
但是同样的逻辑不适用于编辑。
您能否建议如何创建EDIT表单?
答案 0 :(得分:1)
根据您最初用于registration
的问题中的共享视图,并且您对edit
表单使用相同的逻辑,那么您需要使用form_for,如下所示:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
您需要提供method: :put
才能使其在EDIT上运行。
注意:
使用此逻辑,您无法对form_for
和create
使用相同的edit
定义。这意味着您必须有两个单独的视图,一个处理新注册,另一个处理现有注册。
答案 1 :(得分:0)
引用:
抱歉这个真的很长的一系列查询,我试过喂了 当前密码,但仍然没有注册更改 我正在收到成功警报信息 - samikb 14小时前
/结束报价
无法添加评论,因此请在此处回复。 检查应用控制器。由于您的注册过程正常,您应该有一个用于注册的Sanitized Parameters方法。像这样:
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) do |u|
确保您还有类似的更新。 像这样:
devise_parameter_sanitizer.for(:account_update) do |u|