Использование Formtastic с Волшебством. Как настроить форму входа?

Это в основном форма без ресурсов, но другие примеры, похоже, не работают. Я использую волшебство и формастик. formtastic отлично работает для новой пользовательской формы, но я не могу создать новый сеанс...

<%= semantic_form_for 'sessions', :url => sessions_path, :method => :post do |f| %> <%= f.inputs do %> <%= f.input :email %> <%= f.input :password %> <% end %> <%= f.buttons %> <% end %>

это близко, но выводит

<input id="sessions_email" name="sessions[email]" type="text" />

вместо

<input id="sessions_email" name="email" type="text" />

поэтому, когда я отправляю форму, я получаю ошибку отсутствия шаблона

`Шаблон отсутствует

Отсутствуют сеансы/создание шаблона, приложение/создание с помощью {:handlers=>[:erb, :builder, :coffee], :formats=>[:html], :locale=>[:en, :en]}. `

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

РЕДАКТИРОВАТЬ: вот код контроллера для каждого запроса...

class UsersController < ApplicationController
  before_filter :authenticate, :except => [:show, :new, :create]
  before_filter :correct_user, :only => [:edit, :update]
  before_filter :admin_user,   :only => :destroy


  def index
    @title = "All users"
    @users = User.paginate(:page => params[:page])    
  end

  def show
    @user = User.find(params[:id])
    @microposts = @user.microposts.paginate(:page => params[:page], :per_page => 6)
    @title = @user.name
  end

  def new
    @user = User.new
    @title = 'Sign up'  
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      Notifier.registration_confirmation(@user).deliver
      sign_in @user
      flash[:success] = "Welcome!"
      redirect_to @user
    else
      @title = "Sign up"
      render 'new'
    end
  end

  def edit
    @user = User.find(params[:id])
    @title = "Edit user"
  end

  def update
    @user = User.find(params[:id])
    if @user.update_attributes(params[:user])
      flash[:success] = "Profile updated."
      redirect_to @user
    else
      @title = "Edit user"
      render 'edit'
    end
  end

  def destroy
    User.find(params[:id]).destroy
    flash[:success] = "User Removed"
    redirect_to users_path
  end

  def following
    @title = "Following"
    @user = User.find(params[:id])
    @users = @user.following.paginate(:page => params[:page])
    render 'show_follow'
  end

  def followers
    @title = "Followers"
    @user = User.find(params[:id])
    @users = @user.followers.paginate(:page => params[:page])
    render 'show_follow'
  end

  private

    def has_valid_signup_code?(code)
      code == valid_signup_code
    end

    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_path) unless current_user?(@user)
    end

    def admin_user
      redirect_to(root_path) unless current_user.admin?
    end

end

Благодарность!


person afxjzs    schedule 08.11.2011    source источник
comment
Проблема не в имени входа, это должно быть хорошо. Вероятно, речь идет о том, что вы делаете в действии создания вашего контроллера сеансов. Не могли бы вы предоставить код?   -  person tbk    schedule 04.12.2011
comment
Вероятно, у вас также есть session_controller.rb, не так ли? Этот код был бы более интересным;)   -  person tbk    schedule 23.12.2011


Ответы (1)


Вероятно, вам не хватает какой-то переадресации после успешного входа в систему. Вот как выглядит действие создания в моем контроллере сеансов (обратите внимание, что мой контроллер называется UserSessionsController, а не SessionsController):

def create
  if @user = login(params[:session][:email], params[:session][:password])
    redirect_back_or_to root_path, :notice => I18n.t("user_sessions.login_success")
  else
    flash.now[:alert] = I18n.t("user_sessions.login_failure")
    render :action => :new
  end
end

А это форма входа:

= semantic_form_for 'session', :url => user_sessions_path do |f|
  = f.inputs do
    = f.input :email
    = f.input :password

  = f.buttons do
    = f.commit_button
person tbk    schedule 23.12.2011