2

我是 Rails 新手,正在尝试制作一个简单的网站来开始学习。但是,当我提交表单时,数据不会保存到数据库中。我真的不知道出了什么问题,我一直在努力解决一段时间。如果我在 rails 控制台中记录并保存它,那么该记录会成功显示在数据库中(以及索引页面上)。

计算.rb:

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

计算控制器.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

新的.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 %>
4

2 回答 2

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 %>

现在它可以工作了。惊人的。

于 2012-08-11T00:34:55.630 回答
0

如果您正在使用form_for,请使用form_for语法

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

这将自动处理路由,如果@calculate是新对象,它将提交它以创建,或者如果它已经保存,它将发送一个 put 请求edit action

于 2012-08-11T06:08:48.693 回答