在Rails控制器中出现错误信息
问题描述:
在我的Rails应用程序中,我有一个带有输入窗体的局部视图。该表单包含在我的应用程序的多个页面中。在部分岗位的RidesController形式保存这样的create方法:在Rails控制器中出现错误信息
RidesController.rb
def create
@ride = current_user.rides.build(params[:ride])
if @ride.save
flash[:success] = "Ride created!"
redirect_to root_path
else
@rides = current_user.rides.paginate(:page => params[:page])
render 'pages/home' # <---- WHAT GOES HERE?
end
end
我评论了行,其中我的问题是。当我们发生错误时,我需要呈现用户目前所处的相同视图。但是因为这个控制器是从部分而不是全视图调用的,所以我不知道如何告诉它来自哪个上下文。
现在,如果/ rides/new上有错误,用户将重定向到也具有表单的主页。
答
您可以做到这一点的一种方法是将模板路径与表单一起传递。
添加这包括表单部分各主视图(如页/家,游戏机/新等):
<% @current_page_template = __FILE__ %>
在您的形式部分:
<%= form_for ... do |f| %>
<%= hidden_field_tag 'current_page_template',
@current_page_template.sub(File.join(Rails.root, 'app', 'views'), '') %>
在您的控制器:
def create
...
if @ride.save
...
else
...
render params[:current_page_template]
end
end
这对我有效。只有改变是String :: sub需要第二个参数,但我不能编辑答案,因为它只是两个字符的变化。 – jasonrclark 2011-05-21 15:45:04
感谢您的支持 - 我修复了它。 – 2011-05-23 02:30:59