2011-01-06 32 views
1

我決定在rails 3中啓動一個小項目,並且我有點被卡在一個表單中......我應該在哪裏指定f.submit操作應該轉到特定的控制器/操作?表單提交在rails 3中

形式的代碼是:

<%= form_for @user, :url => { :action => "login" } do |f| %> 
<div class="field"> 
<%= f.text_field :email %><br /> 
<%= f.text_field :password %> 
</div> 
<div class="actions"> 
<%= f.submit %> 
</div> 
<% end %> 

用戶處於 「home_controller」, 「索引」 的方法定義爲@user = User.new。只要我跑http://0.0.0.0:3000

我對這個newbee問題非常遺憾

No route matches {:controller=>"home", :action=>"login"} 

,但我找不到路由的詳細介紹(我的工作有點用導軌:

,但我有錯誤幾年前,但...)

感謝, 呂克

回答

2

你並不需要指定f.sumbit任何行動。所有的 首先,你需要確保你把

resources :users 

(例如)

在你的routes.rb

然後如果你想創建一個用戶

def new 

    @user = User.new 

end 

在你的users_controller中,所以你有一個頁面來創建新的用戶 或者你可以把@用戶= User.new任何你喜歡,記得設置 路線正確

然後

 def create 


    @user = User.new(params[:id]) 

    if @user.save 
     sign_in @user 

     redirect_to @user 
    else 

     render 'new' 
    end 

end 

是做實際工作,你打在提交後的部分

與一切連接你的表單的實際部分是此行

<% form_for @user do |f| %> 

,您可以更改用戶到其他對象,你ç也是在控制器中使用更新操作的編輯表單。

希望你有這個想法

+0

其實,我有所有的REST操作的用戶模型,這是工作的罰款。我現在想要做的是建立一個基本的登錄頁面。然後,我在app/views/home中創建了一個_form.html.erb,我想在登錄後重定向到用戶列表(登錄表單提交後) – Luc 2011-01-06 21:37:12

1

當你使用REST對象,僅憑:

form_for @article 

就足以讓窗體找到正確的路徑。

否則,你可以使用的助手這樣說:

form_tag(:controller => "people", :action => "search", :method => "get", :class => "nifty_form") 

此處瞭解詳情:http://edgeguides.rubyonrails.org/form_helpers.html