Rails 3:设计问题

时间:2011-05-19 16:07:17

标签: ruby-on-rails ruby devise

我是Ruby初学者,我正在寻找关于Devise的一些帮助。

我的问题在于新用户的表单。

我使用Devise视图“sign_up”创建了一个用户,然后我被重定向到我的用户类的索引。

如果我点击“新用户”链接,我会收到表格,但没有电子邮件和密码字段。 所以我添加了这两个字段,但后来我的新用户不存在,它没有被添加到数据库中。

有没有人能解决这个问题?

更新

是的,我在github上阅读了教程。

我做了:

rails g devise:install
rails g devise User

我已经使用原始和Devise attributs迁移了一个用户表

#user_controller.rb
class UsersController < ApplicationController
before_filter :authenticate_user!

# GET /users
# GET /users.xml
def index
  @users = User.all

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @users }
  end
end

# GET /users/1
# GET /users/1.xml
def show
  @user = User.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.xml  { render :xml => @user }
  end
end

# GET /users/new
# GET /users/new.xml
def new
  @user = User.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @user }
  end
end

和我的表格:

 <%= form_for(@user) do |f| %>
      <% if @user.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

          <ul>
          <% @user.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
          <% end %>
          </ul>
        </div>
      <% end %>

  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email %>  
  </div>
  <div class="field">
    <%= f.label :password %><br />
    <%= f.password_field :password %>
  </div>
  <div class="field">
    <%= f.label :password_confirmation %><br />
    <%= f.password_field :password_confirmation %>
  </div>
  <div class="field">
    <%= f.label :nom %><br />
    <%= f.text_field :nom %>
  </div>
  <div class="field">
    <%= f.label :prenom %><br />
    <%= f.text_field :prenom %>
  </div>
  <div class="field">
    <%= f.label :role %><br />
    <%= f.text_field :role %>
  </div>
  <div class="field">
    <%= f.label :date_embauche %><br />
    <%= f.date_select :date_embauche %>
  </div>
  <div class="field">
    <%= f.label :domaine %><br />
    <%= f.text_field :domaine %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我的模特:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
  attr_accessible :email, :password, :password_confirmation, :remember_me, :nom, :prenom, :role, :date_embauche, :domaine
end

1 个答案:

答案 0 :(得分:1)

如果您使用Devise,则应使用视图和控制器来创建用户 用户索引页面上的“新用户”链接应如下所示:
<%= link_to 'New User', new_user_registration_path %>

要自定义Devise视图,您可以运行:
rails generate devise:views

然后修改rails_root/app/views/devise/registrations/new视图