Rails form_for提交按钮不起作用

时间:2014-03-21 11:13:52

标签: ruby-on-rails-3 forms

感谢您的耐心等待。对Rails来说还是一个新手。

使用Rails 3.2

为简单的应用制作注册页面。我的问题是,我的表单上的提交按钮不会产生任何影响,无论表单中的信息是否有效。

用户模型和数据库似乎都运行良好。如果我从rails控制台手动添加用户,它会将其添加到数据库中。据我所知,问题似乎是由form_for生成的形式。

以下是相关网页:

<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>

<div class="row">
    <div class="span6 offset3>
        <%= form_for(@user) do |f| %>
            <%= render 'shared/error_messages' %>

            <%= f.label :name %>
            <%= f.text_field :name %>

            <%= f.label :email %>
            <%= f.text_field :email %>

            <%= f.label :password %>
            <%= f.password_field :password %>

            <%= f.label :password_confirmation, "Confirmation" %>
            <%= f.password_field :password_confirmation %>

            <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
        <% end %>
    </div>
</div>

这是我的用户控制器:

  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
        if @user.save
            flash[:success] = "Thank you for signing up! Please check your email to confirm your account."
            redirect_to @user
        else
            render 'new'
        end
    end
end

提交不会导致任何类型的错误 - 根本不会导致任何事情发生。所以日志中没有有价值的信息。

提前感谢您的任何见解。

编辑:从/shared/_error_messages.html.erb部分

添加代码
<% if @user.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-error">
      The form contains <%= pluralize(@user.errors.count, "error") %>.
    </div>
    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li>* <%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

4 个答案:

答案 0 :(得分:10)

在仔细编码中,这是一个很好的小课:

<div class="row">
    <div class="span6 offset3>
        <%= form_for(@user) do |f| %>

应该是:

<div class="row">
    <div class="span6 offset3**"**>
        <%= form_for(@user) do |f| %>

结束标记可以产生相当大的差异。

答案 1 :(得分:0)

我认为问题在于您没有将错误传递给shared/error_messages部分错误。你必须在那里传递@user。但我不确定,因为我没有看到shared/error_messages部分。我想让它给你更详细的答案。

答案 2 :(得分:0)

在此控制器中替换此行:@user = User.new(params[:user])@user = User.new(user_params)

总是在你的控制器中,methode users_params应该是:

def user_params
      params.require(:user).permit(:name, :email, :password,
                                   :password_confirmation)
end

对我来说效果很好!

答案 3 :(得分:0)

如果您来到此页面,想知道为什么您的按钮没有提交,请检查以下内容:

  1. 您已获得有效的 Html(已接受的答案)。
  2. 您的表单中没有 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <style> main { padding: 15px; background: #000; } .navbar-search { position: relative; padding: 0px 15px; } .navbar-input { width: calc(100% - 80px); } .navbar-button { width: 75px; } .autocom-box ul { background: #fff; } .autocom-box li { background-color: white; color: black; padding: 10px 20px; } .autocom-box { position: absolute; z-index: 9999; border-top: 1px solid black; box-shadow: 4px 4px 8px -1px black; width: 100%; } </style> </head> <body> <main> <div id="buscqueda" class="navbar-search smallsearch"> <div class="col-sm-8 col-xs-11"> <div class="row"> <input class="navbar-input" type="" placeholder="Buscar productos" name=""> <button class="navbar-button"> <svg width="15px" height="15px"> <path d="M11.618 9.897l4.224 4.212c.092.09.1.23.02.312l-1.464 1.46c-.08.08-.222.072-.314-.02L9.868 11.66M6.486 10.9c-2.42 0-4.38-1.955-4.38-4.367 0-2.413 1.96-4.37 4.38-4.37s4.38 1.957 4.38 4.37c0 2.412-1.96 4.368-4.38 4.368m0-10.834C2.904.066 0 2.96 0 6.533 0 10.105 2.904 13 6.486 13s6.487-2.895 6.487-6.467c0-3.572-2.905-6.467-6.487-6.467 "> </path> </svg> </button> </div> <div class="autocom-box row"> <ul> <li>producto 1</li> <li>producto 2</li> <li>producto 3</li> <li>producto 4</li> </ul> </div> </div> <div class="clearfix"></div> </div> </main> </body> </html>(隐藏的)并且没有出现(这花了我一生中痛苦的两个小时才发现 - 希望它没有白费。)
相关问题