我正在构建我的第一个rails应用程序,并且对ruby和rails都是新手。在通过ajax提交表单后,我试图在页面上呈现提交消息。
我已添加到我的表单中:remote =>真参数。但是,在我的应用程序中,我似乎无法呈现消息。作为测试,我已经设置了一个新的rails应用程序,并使用脚手架生成了一个帖子模型和视图等。
我添加了遥控器:remote =>对生成的表单是true。它将数据提交给db。我已经阅读过我可以更新控制器以包含带有format.js的js,在这种情况下将posts_controller.rb func更新为
def new
@post = Post.new
respond_to do |format|
format.html # new.html.erb
format.js
end
end
一些教程说你可以在views / posts文件夹中添加一个new.js.erb或create.js.erb(不确定它应该是什么),这应该被执行但除了正在提交的数据。
我也尝试过:
format.js { render :js => "alert('Hello Rails');" }
作为测试。
我正在使用rails 3.1而且我不知道接下来应该尝试什么
答案 0 :(得分:7)
你快到了。提交的表单由create操作处理,而不是由new处理。你已经掌握了处理html或js的语法 - 你只需要在你的创建动作中使用它,以及一个包含你要渲染的js的create.js.erb。
你的PostsController应该有
的创建功能def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html
format.js
else
format.html { render :action => 'new' }
format.js { render 'fail_create.js.erb' }
end
end
end
创建一个名为create.js.erb的文件(在posts目录的视图目录中),包含
alert('Hello Rails');
对于成功案例,你应该好好去。创建第二个名为fail_create.js.erb的文件,其中包含要在失败时呈现的任何javascript(例如,当提交的表单数据未通过模型的验证时)。