Rails link_to在form_for中

时间:2013-10-23 15:43:41

标签: ruby-on-rails

我正在尝试使用登录表单创建主页。登录工作正常,但注册按钮最终尝试登录用户,而不是按预期重定向到注册页面。这是我正在使用的代码。知道如何修复此错误吗?感谢。

    <div class="well sidebar-nav">
       <br>

        <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
          <div class="input-prepend">
            <span class="add-on"><i class="icon-user"></i></span>
            <%= f.text_field :login, :required => false, :autofocus => true, :placeholder => "Username or Email" %>
          </div>

          <div class="input-prepend">
            <span class="add-on"><i class="icon-lock"></i></span>
            <%= f.password_field :password, :placeholder => "Password" %>
          </div>

          <div class="btn-toolbar">
            <div class="row-fluid">
              <div class="span4" style="margin-left: 1.25%; width: 50%">
                <button class="btn btn-success" type="submit">
                  <i class="icon-signin"></i>
                  <% f.submit 'Sign in' %> Sign In
                </button>
              </div>
              <% end %>


              <div class="span3" style="margin-left: -5%; width: 50%">
                <button class="btn btn-success">
                  <i class="icon-pencil"></i>
                  <%= link_to 'Sign up', new_user_registration_path  %> Sign Up
                </button>
              </div><!-- /span8 -->
            </div><!-- /rowfluid -->
          </div><!-- /btn-toolbar -->
      </div><!-- /well -->

更新: 事实证明,在按钮类之外放置注册链接解决了这个问题。

1 个答案:

答案 0 :(得分:2)

您应该寻找替换此代码:

<button class="btn btn-success">
    <i class="icon-pencil"></i>
    <%= link_to 'Sign up', new_user_registration_path  %> Sign Up
</button>

对我来说,这里的语法本质上是错误的。问题是你试图在一个按钮元素中放置一个链接,这不起作用(这是违反HTML语法)


您可能正在寻找button_to帮手?

<%= button_to "Sign Up", new_user_registration_path, :method => "get" %>

这将在您的页面上创建一个小表单,这将使用户获得所需的URL。不同之处在于用户只会看到按钮而没有其他内容:)