所以我试图编写一个从表单中保存对象的控制器。我定义了一个我认为应该正确的创建方法。
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不会抛出任何语法错误并显示表单。任何帮助或见解将不胜感激。
答案 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
检查,因为始终返回对象的初始化。