【发布时间】:2012-06-08 21:40:01
【问题描述】:
我正在使用 Rails 3,并且在 StatusController 中有一个 form_for。当我点击提交按钮时,我的 create 方法永远不会被调用。我的 create 方法有一个 redirect_to :index,但是当我点击提交时,所有信息都保留在表单中,并且页面不会重定向。但是,该对象确实正确保存在数据库中。
这是什么原因造成的?
控制器:
class StatusController < ApplicationController
def new
@status = Status.new
end
def create
@status = Status.new(params[:status])
@status.date_added = Time.now
if @status.save
else
render 'new'
end
end
查看:
.well
=form_for @status do |f|
=f.label :user_email
=f.text_field :user_email
=f.label :added_by
=f.text_field :added_by
=f.label :comments
=f.text_area :comments
%br
%br
=f.submit
我已经对此进行了代码调整,现在数据在提交时从表单中消失了,但是该对象永远不会被保存,因为从未调用过“创建”。
【问题讨论】:
-
@Goober 您应该发布新的代码并从状态控制器创建操作以及来自“新”视图的 form_for 代码。
-
其实你的create方法没有redirect_to :index
-
您的状态模型中是否有任何可能导致此问题的验证?
-
如果确实没有调用 create 操作,可能是路由问题。您的 routes.rb 中有
resources :statuses吗? -
感谢 cdesrosiers,我是个白痴...将控制器生成为 StatusController 而不是 StatusesController。难怪一切都崩溃了。
标签: ruby-on-rails ruby ruby-on-rails-3