0

我想在页面顶部的任何地方创建一个登录字段,所以我添加了一个:

在 application.html.erb 中:

<%= render :partial => 'sessions/new' %>

在 .../views/sessions/_new.html.erb

<%= form_tag do %>
  <div>
    <label for="name">Email :</label>
    <%= text_field_tag :name, params[:name] %>
    <label for="password">Mot de passe :</label>
    <%= password_field_tag :password, params[:password] %>
  </div>

  <div>
    <%= submit_tag "Connection" %>
  </div>
</fieldset>

但只有当我在浏览器中测试它时,它才在会话控制器中工作,我认为:

<%= submit_tag "Connection" %>

指的是他当前的控制器(会话),这就是为什么它在广告/索引中不起作用,但在会话/索引中执行它的工作。

我能做些什么 ?我必须在 submit_tag 中指定控制器吗?

非常感谢 :)

4

2 回答 2

0

您需要告诉表单标签表单应该提交到的 url。也许默认情况下它会提交给当前操作或其他什么?无论它是什么,你都不应该依赖默认值。

阅读 API http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002551&name=form_tag

哦,顺便说一句,提交标签只是一个按钮,它与表单工作或不工作的原因没有任何关系。Rails 新手对表单有很多困惑——很多人并不真正了解表单是如何工作的。在使用任何 Rails 助手之前,我强烈建议您使用纯 html 制作表单。这样你就会明白实际发生了什么,表单助手就是这样,即“帮助你更快地做某事的东西”,而不是这些神奇的东西,当他们不做什么时让你完全不知所措你期望。

于 2010-06-04T14:45:34.013 回答
0

您需要指定控制器,但form_tag不是submit_tag

例如<%= form_tag :controller => 'sessions', :action => 'new' %>

于 2010-06-04T14:46:31.267 回答