rails表单数据未保存到db

时间:2012-08-11 00:23:36

标签: ruby-on-rails ruby

我是rails的新手,并试图建立一个简单的网站来开始学习。但是,当我提交表单时,数据不会保存到数据库中。我真的不确定出了什么问题,我一直试图想出来。如果我在rails控制台中创建一个记录并保存它,那个成功地显示在db(和索引页面)上。

calculate.rb:

class Calculate < ActiveRecord::Base
  attr_accessible :number, :root
end

calculates_controller.rb:

class CalculatesController < ApplicationController
  def index
    @calculate = Calculate.all
  end

  def new
    @calculate = Calculate.new
  end

  def create
    @calculate = Calculate.new(params[:calculate])
    if @calculate.save
      redirect_to '/calculates'
    else
      render 'new'
      flash[:notice] = "Didn't work"
    end
  end
end

new.html.erb:

<%= form_for(@calculate) do %>
  <%= label_tag(:number, "Enter the number") %>
  <%= text_field_tag :number %>
  <%= label_tag(:root, "root") %>
  <%= text_field_tag :root %>
  <%= submit_tag("Submit") %>
<% end %>

2 个答案:

答案 0 :(得分:0)

啊,哈哈!我将我的观点更新为:

<%= form_for @calculate, :url => { :action => "create" } do |f| %>
  <%= f.label :number %>
    <%= f.text_field :number %>
    <%= f.label :root %>
    <%= f.text_field :root %>
    <%= submit_tag("Submit") %>
<% end %>

现在它有效。真棒。

答案 1 :(得分:0)

如果您使用form_for,请使用form_for syntax

<%= form_for(@calculate) do |form| %>
  <%= form.label :number %>
  <%= form.text_field :number %>
  <%= form.label :root %>
  <%= form.text_field :root %>
  <%= form.submit "Submit" %>
<% end %>

这将自动处理路线,如果@calculate是新提交的对象,或者如果已经保存,则会向edit action发送放置请求