0

我在rails中使用简单的形式。提交数据后。页面总是返回application_form#new,数据无法保存在db中。为什么?

日志

Started POST "/application_forms" for 127.0.0.1 at 2013-05-25 19:23:28 +0800
Processing by ApplicationFormsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"yypWFcsXbdSVtp3WXUZKvstzHWsV0OOpLoGSxO1ldJ0=", "application_form"=>{"student_name"=>"somebody", ...... ,"application_type"=>"b"}, "commit"=>"Submit"}
  [1m[35mUser Load (0.0ms)[0m  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
  [1m[36m (0.0ms)[0m  [1mbegin transaction[0m
  [1m[35m (0.0ms)[0m  rollback transaction
  Rendered application_forms/_form.html.erb (24.0ms)
  Rendered application_forms/new.html.erb within layouts/application (25.0ms)
Completed 200 OK in 61ms (Views: 52.0ms | ActiveRecord: 0.0ms)

看法

<%= simple_form_for @application_form, :html => {:class => 'form-horizontal' } do |f| %>

  <legend>Basic Info</legend>
  <%= f.input :student_name %>
  <%= f.button :submit, 'Submit', :class => 'btn-large btn-primary'%>

<% end %>

控制器

 def create

    @application_form = ApplicationForm.new(params[:application_form])

    respond_to do |format|
      if @application_form.save
        format.html { redirect_to @application_form, :notice => 'Submit ok.' }
      else
        format.html { render :action => "new" }
      end
    end
  end
4

1 回答 1

1

好吧,显然@application_form.save是失败的。如果我不得不猜测,我猜你的模型验证失败了。当我编写了一个好的模型(包括我想要的所有验证)时,这种情况偶尔会发生在我身上,但是我刚刚开始整理一个表单,我忘记了包含所有需要存在的字段。

检查这一点的一种方法是打开

rails console

并尝试这样的事情:

@application_form = ApplicationForm.new(:student_name => "student")
@application_form.save

这将与您的表单所做的几乎完全一样,并且应该在您尝试保存时告诉您问题所在。

我的猜测是您也忘记在布局文件中包含 Flash 消息。save通常,失败时您会在闪存中看到某种错误消息。由于您似乎正在使用 Twitter Bootstrap(只是从form-horizontal表单视图上的类猜测),假设您使用twitter-bootstrap-rails gem,您可以添加 <%= bootstrap_flash %>到您的视图或模板中。

于 2013-05-25T15:19:03.260 回答