部分模板submit_tag

时间:2010-06-04 14:42:03

标签: ruby-on-rails ruby-on-rails-3 renderpartial

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

在application.html.erb中:

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

in ... / 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中指定控制器?

非常感谢:)

2 个答案:

答案 0 :(得分:0)

您需要告诉表单标记表单应提交的URL。也许默认情况下它会提交给当前的动作或什么?无论如何,你都不应该依赖默认值。

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

哦,顺便说一下提交标签只是一个按钮,它与表单为什么或不起作用没有任何关系。关于表单的rails新手之间存在很多混淆 - 很多人并不真正理解表单是如何工作的。在使用任何rails帮助程序之前,我强烈建议您使用纯HTML格式化表单。通过这种方式,你将了解实际发生的事情,形式助手就是这样,即“帮助你更快地做某事的事情”,而不是当他们不做什么时让你完全无知的这些神奇事物你期待。

答案 1 :(得分:0)

您需要在form_tag而不是submit_tag

上指定控制器

e.g。 <%= form_tag :controller => 'sessions', :action => 'new' %>