ruby on rails params没有被保存

Chr*_*abe 1 ruby ruby-on-rails

我是一个铁路(和红宝石)新手和一个脚手架控制器挣扎,我试图调整更多我的配置 - 记录正在保存,但数据库中的字段为空 - 这是开发的结果.log

Started POST "/events" for 127.0.0.1 at 2011-12-12 10:36:55 +0000
  Processing by EventsController#create as HTML
  Parameters: {"utf8"=>"?", "authenticity_token"=>"mizap5163W5RbRrHiWdepYZDgrsaflhJPWaVhdHlaOA=", "event"=>{"title"=>"bla de bla", "details"=>"bla de bla", "ticket_info"=>"bla de bla", "when(1i)"=>"2011", "when(2i)"=>"12", "when(3i)"=>"12", "when(4i)"=>"10", "when(5i)"=>"34", "ends(1i)"=>"2011", "ends(2i)"=>"12", "ends(3i)"=>"12", "ends(4i)"=>"10", "ends(5i)"=>"34"}, "commit"=>"Create Event"}
  [1m[35m (0.0ms)[0m  BEGIN
  [1m[36mSQL (0.0ms)[0m  [1mINSERT INTO `events` (`created_at`, `details`, `ends`, `image_url`, `location`, `organiser_id`, `ticket_info`, `title`, `updated_at`, `when`) VALUES ('2011-12-12 10:36:55', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2011-12-12 10:36:55', NULL)[0m
  [1m[35m (45.0ms)[0m  COMMIT
Redirected to http://localhost:3000/events/11
Completed 302 Found in 67ms
Run Code Online (Sandbox Code Playgroud)

表格和控制器非常基本,所以我不知道我哪里出错了.

控制器方法 -

# GET /Events/new
  # GET /Events/new.json
  def new
    @Event = Event.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @Event }
    end
  end

  # GET /Events/1/edit  
  def edit
    @Event = Event.find(params[:id])
  end

  # POST /Events
  # POST /Events.json
  def create
    @Event = Event.new(params[:Event])


    respond_to do |format|
      if @Event.save

        format.html { redirect_to @Event, notice: 'Event was successfully created.' }
        format.json { render json: @Event, status: :created, location: @Event }
      else
        format.html { render action: "new" }
        format.json { render json: @Event.errors, status: :unprocessable_entity }
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

形式(可能是非常基本的错误)

<%= form_for(@Event) do |f| %>

  <% if @Event.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@Event.errors.count, "error") %> prohibited this event from being saved:</h2>

      <ul>
      <% @Event.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :details %><br />
    <%= f.text_area :details %>
  </div>
  <div class="field">
    <%= f.label :ticket_info %><br />
    <%= f.text_area :ticket_info %>
  </div>
  <div class="field">
    <%= f.label :when %><br />
    <%= f.datetime_select :when %>
  </div>
   <div class="field">
    <%= f.label :ends %><br />
    <%= f.datetime_select :ends %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

和模型 - (我添加在attr_accessible标签认为它owuld有所作为)

class Event < ActiveRecord::Base
   attr_accessible :title, :Details, :image_url, :organiser_id, :ticket_info, :when, :ends, :location
end
Run Code Online (Sandbox Code Playgroud)

你可以从日志中看到sql查询没有插入任何数据的行,但是params就是它们

dav*_*idb 6

这是错的:

def create
    @Event = Event.new(params[:Event])
    ....
end
Run Code Online (Sandbox Code Playgroud)

它应该是:

def create
    @Event = Event.new(params[:event])
    ....
end
Run Code Online (Sandbox Code Playgroud)

HF ...

//你也应该在cvariable名字中使用downcase.大写只应用于ClassName之类的常量!