没有创建的对象,刚开始学习rails

时间:2013-12-04 00:56:18

标签: ruby-on-rails ruby

所以我试图编写一个从表单中保存对象的控制器。我定义了一个我认为应该正确的创建方法。

def create
@info = Info.new(params[:info])

if @info != nil
    @display_message = 'Object created successfully, thank you'
else
    @display_message = 'Sorry! Object was not created successfully'
    render 'index'
    end
 end

然而,当我提交表单并在rails控制台中调用Info.all时,我只得到并清空数组。

<h1>Please enter information about an Info object</h1>
<%= form_for @info, :action => :create do |f| %>
<%= f.label :title %><br />
<%= f.text_field :title %> <br />
<%= f.label :price %><br />
<%= f.text_field :price %> <br />
<%= f.submit "Submit" %> <br />
<% end %>

据我所知这应该有效,localhost:3000不会抛出任何语法错误并显示表单。任何帮助或见解将不胜感激。

3 个答案:

答案 0 :(得分:1)

你只是实例化它,而不是保存它,例如,

@info.save

虽然你可能想要考虑渲染,因为刷新可能不会做你想要的。

答案 1 :(得分:1)

您应该将对象保存为持久性。所以你的控制器方法应该看起来像下面的代码

def create
  @info = Info.new(params[:info])

  if @info.save
    flash[:success] = 'Object created successfully, thank you'
    render :index
  else
    flash[:error] = 'Sorry! Object was not created successfully'
    render :new
  end
end

还可以使用rails flash对象向用户显示消息。

答案 2 :(得分:0)

Info.new只初始化一个不会持久化的对象。请致电Info.create@info.save

您不需要nil检查,因为始终返回对象的初始化。