https://gist.github.com/781133
我有一个应该提交到“/ site /:id / detail”的表单,但当我查看表单操作时,它会显示“/site/:id/detail.1”并在点击更新后动作(我不使用网络创建,所以我无法测试)最终在“/site/:id/detail.1”,但我需要在“/site/:id/detail".
我已经包含了表单,更新操作和我的应用程序的路由。任何帮助将不胜感激!
答案 0 :(得分:1)
问题在于Rails如何处理路径助手。当您创建单个resource
路由时,它仍会创建resource_path
帮助程序,但它不会期望对象参数,因为它是单个资源,而不是集合。传入@path对象时,其ID将用作生成路径的格式。
而不是redirect_to resource_path(@resource)
使用redirect_to resource_path
,其中“single_resource”是此结构所基于的模型的名称。
因此,在您的代码中,您可能希望将此部分切换为以下内容...
if @detail.update_attributes(params[:detail])
format.html { redirect_to(site_detail_path, :notice => 'Details Updated!') }
format.js { render :layout => false}
else
format.html { redirect_to(site_detail_path, :notice => 'Details Not Updated.') }
format.xml { head :ok }
end