Rails 3: проблема с Devise - PullRequest
0 голосов
/ 19 мая 2011

Я новичок в Ruby и мне нужна помощь по поводу Devise.

Моя проблема с формой для нового пользователя.

Я создал пользователя с представлением Devise "sign_up", а затем перенаправлен на индекс моего пользовательского класса.

Если я нажму на ссылку «Новый пользователь», я получу форму, но без полей для адреса электронной почты и пароля. Поэтому я добавляю эти 2 поля, но мой новый пользователь не существует, он не добавляется в базу данных.

У кого-нибудь есть решение этой проблемы?

UPDATE

Да, я прочитал учебник на github.

Я сделал:

rails g devise:install
rails g devise User

и я перенес одну таблицу User с оригинальными и Devise атрибутами

#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 Ответ

1 голос
/ 19 мая 2011

Если вы используете Devise, вы должны использовать его представления и контроллеры для создания пользователей.
Ваша ссылка «Новый пользователь» на странице индекса пользователей должна выглядеть следующим образом:
<%= link_to 'New User', new_user_registration_path %>

А для настройки представлений Devise вы можете запустить:
rails generate devise:views

, а затем редактировать rails_root/app/views/devise/registrations/new просмотр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...