我正在使用 Rails 3,并且我在 StatusController 中有一个form_for。当我点击提交按钮时,我的创建方法永远不会被调用。我的创建方法有一个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
我已经将代码调整到此,现在数据在提交时从表单中消失,但是对象永远不会保存,因为永远不会调用“Create”。
你的控制器看起来有点奇怪...我假设您有Rails 3.2或更高版本。
class StatusController < ApplicationController
respond_to :html
def new
@status = Status.new
end
def create
@status = Status.new(params[:status])
@status.date_added = Time.now
@status.save
respond_with(@status)
end
end
respond_with
是为你做所有的事情。如果保存失败,它将呈现新
操作,如果保存成功,它将重定向到status_path(@status)。
如果要更改重定向行为,可以使用(否则未记录):location
属性来阐明要将用户重定向到何处,也可以通过传递具有一个参数(格式)的块来覆盖默认的“成功”行为。有关详细信息,请参阅其文档。
顺便说一下,如果您使用<code>t。状态迁移中的时间戳s,则您已经有了created_at
字段,它由save
/update_attributes
,因此您不需要date_added
。
我只是在这里学习Ruby,所以我可能是错的,但如果状态保存正确,看起来你永远不会重定向。
class StatusController < ApplicationController
def new
@status = Status.new
end
def create
@status = Status.new(params[:status])
@status.date_added = Time.now
if @status.save
format.html { redirect_to @status } # Or :index if you want to redirect to index
else
render 'new'
end
end
当然,请确保您也创建了这些控制器方法和视图。
本文向大家介绍Yii 框架控制器创建使用及控制器响应操作示例,包括了Yii 框架控制器创建使用及控制器响应操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii 框架控制器创建使用及控制器响应操作。分享给大家供大家参考,具体如下: Yii 框架控制器创建使用 在根目录下的controllers目录下创建控制器HelloController.php: 访问地址:basic/web/i
问题内容: 我正在将数据从javascript应用程序发送到MVC5控制器,但是,当数据提交到Submit controller操作时,它永远不会被调用。我有一些非常简单的映射器,它们创建以下JSON对象: 然后,我使用以下代码发送数据: 我的控制器代码如下: 我有以下问题: 但是,从不会调用Submit,但是,如果我注释掉了控制器参数,那么它将被调用,这是为什么呢? 从上面看来,控制器框架似乎无
假设我有一个名为的扩展,my_extension一个名为的插件。 然后,我的控制器中有一个名为的函数。 如何通过通常的http GET请求从外部调用此?
问题内容: 我有一个不错的页面,可以满足我的所有需求。但是,其中一个元素(部分页面)花费的时间比我要加载的时间长几秒钟。因此,我想做的是先显示该页面,而不显示部分内容,而在其位置显示“正在加载” gif。然后在我的jQuery中… 我想调用我的控制器操作,该操作返回PartialView并更新div内容。它基本上在加载时异步调用部分加载。我可以使用ActionLink做到这一点,直到达到我希望在加
问题内容: 我已经阅读了一段时间,发现可以使用以下命令调用控制器操作: 这是否意味着我应该将MicrosoftMvcAjax.js或MicrosoftAjax.js与Jquery库一起添加? 另外,第二个参数应在$ .ajax()函数中包含什么? 最后,在stackoverflow内或站点外部是否有其他链接可能对带ajax和jquery的asp.net mvc有帮助? 谢谢。 问题答案: 您可以从
问题内容: 如何创建可从所有控制器访问的某种utils捆绑包? 我的主模块中有以下路由代码: 我想是可以通用的功能,和。 我应该如何在AngularJS中做到这一点? 问题答案: 用角度定义通用代码的方法是通过服务。 您将像这样定义一个新服务: 在您的控制器中,您将注入此服务。 只需将CommonCode用作控制器函数的参数即可。Angular会为您注入它(请阅读Dependency Inject