2012-10-12 68 views
0

我創建控制器:如何調用設計方法

class SigninController < ApplicationController 
    def index 
    end 
    def create 
    @user = User.find_by_email(params[:user][:email]) 
    if @user 
     .... 
     sign_in(:user, @user) 
    else 
     @user = User.new(params...) 
     @user.save 
     ... 
    end 
    end 
end 

正確我叫sign_in方法?

登入/ index.html.erb:

<h2>Sign in</h2> 
<%= form_for(User.new, :as => :user, :url => "signin") do |f| %> 
    <div><%= f.label :email %><br /> 
    <%= f.email_field :email %></div> 
    <div><%= f.label :password %><br /> 
    <%= f.password_field :password %></div> 
    <br> 
    <div><%= f.submit "Sign in" %></div> 
<% end %> 

如何調用設計色器件sign_in和sign_up方法呢?

+0

您是否正在嘗試手動編寫登錄表單以及簽名的代碼?設計爲你做。你不必自己寫這些東西。 –

+0

我想登錄用戶和創建用戶在一個頁面上,在這個我做我的控制器 – Nar

回答

3

試試這個在app/controllers/application_controller.rb

class ApplicationController < ActionController::Base 
    def after_create_path_for(resource) 
    sign_in(:user, resource) 
    end 
end 

這只是一種猜測的。我不知道它是否會起作用。

+0

已註冊:@ User.save – Nar

0

你可能會但在大多數情況下,你不應該創建自定義控制器來登錄/註銷用戶。設計有sessions_controller爲你實現這個功能。查看devise documentation和wiki,它有大量的文檔。您還可以在那裏找到如何自定義視圖和控制器行爲。

更新

如果需要放置在一個視圖中,您可以自定義色器件視圖兩種形式(登錄和註冊)。表單操作可能指向不同的標準控制器。我建議使用基本形式的用戶/註冊/新形式,並添加使用/會話/新形式。

+0

我想登錄用戶和創建用戶在一個頁面上,在這個我做我的控制器 – Nar

+0

@羅曼:更新我的答案,澄清如何去完成。 – Voldy

+0

我想放置一個表單(登錄名和密碼),如果電子郵件已存在,則會將用戶登錄。如果電子郵件不存在,則會使用這些憑據創建新用戶。 – Nar