2011-11-08 50 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]}。 `

我想我只需要知道如何設置具體的形式的'名稱'屬性,但這似乎有點破解。有沒有更多'語義'的方式來做到這一點?請幫助謝謝。

編輯:這裏的每個請求的控制器代碼...

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

您可能在成功登錄後缺少某種重定向。這是怎麼創造我的會話動作控制器看起來像(注意我的控制器命名爲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 
相關問題