在rails 3中提交表单

时间:2011-01-06 21:10:24

标签: ruby-on-rails

我决定在rails 3中启动一个小项目,我有点卡在一个表单上......我在哪里可以指定f.submit动作应该转到一个特殊的控制器/动作?

表格中的代码是:

<%= 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”的“index”方法中定义为@user = User.new。

但我有错误:

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

我一跑http://0.0.0.0:3000

对于这个新问题,我感到非常抱歉,但我找不到路由详细信息(几年前我使用rails工作了一段时间但是...)

谢谢, LUC

2 个答案:

答案 0 :(得分:2)

您无需为f.sumbit指定任何操作。 首先,你需要确保你把

 resources :users 

(例如)

你的routes.rb

中的

然后如果你想创建一个用户

  def new

     @user = User.new

 end
在您的users_controller中

,这样您就有了一个用于创建新用户的页面 或者你可以把@ user = 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| %>

您可以将用户更改为其他对象,也可以使用控制器中的更新操作来编辑表单。

希望你有这个想法

答案 1 :(得分:1)

无论何时使用REST对象,只需:

form_for @article

足以让表单找到正确的路径。

否则,您可以这样使用帮助:

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

此处有更多信息:http://edgeguides.rubyonrails.org/form_helpers.html