Ruby on Rails - 编辑无效

时间:2014-04-09 13:29:23

标签: ruby-on-rails forms devise

我有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表单?

2 个答案:

答案 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_forcreate使用相同的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|