【问题标题】:Partial template submit_tag部分模板 submit_tag
【发布时间】:2010-06-04 14:42:03
【问题描述】:

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

在 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" %>

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

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

非常感谢:)

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      例如&lt;%= form_tag :controller =&gt; 'sessions', :action =&gt; 'new' %&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 2011-10-30
        • 2011-01-20
        • 1970-01-01
        相关资源
        最近更新 更多