2011-01-06 59 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