2011-11-08 1 views
0

이것은 기본적으로 자원이없는 형식이지만 다른 예제는 작동하지 않는 것 같습니다. 나는 마법과 formtastic을 사용하고 있습니다. 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" />

의 그래서, 나는 TEMPL를 얻을 수 오류없는 먹었

`템플릿

없는 템플릿 세션을 생성/응용 프로그램/{로 만들 누락 : 핸들러 => [: ERB : 빌더 : 커피] : 형식 => [: HTML, : locale => [: en, : en]}. '

나는 단지 폼의'name '속성을 설정하는 방법을 알아야 할 것 같지만 해킹 비트처럼 보입니다. 이것을하기위한 '의미 론적'방법이 더 있습니까? 도와 줘서 고마워.

편집 : 여기에 요청에 따라 컨트롤러 코드 ...

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 

덕분입니다!

+0

문제는 이름이 아닌 입력의, 괜찮을 것입니다. 세션 컨트롤러의 생성 작업에서 수행하는 작업에 관한 내용 일 것입니다. 코드를 제공 할 수 있습니까? – tbk

+0

코드가 제공됩니다. 다시 한 번 감사드립니다. – afxjzs

+0

당신은 아마도 또한 sessions_controller.rb가 있습니까? 이 코드는 더 흥미로울 것입니다;) – tbk

답변

0

로그인 성공 후 일종의 리디렉션이 누락되었을 수 있습니다. 이것은이 (내 컨트롤러가 SessionsControllerUserSessionsController 명명되지 않고 주) 컨트롤러의 모습을 내 세션의 동작을 만드는 방법은 다음과 같습니다

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