Rails:重定向到错误的路径

时间:2017-09-10 11:37:49

标签: ruby-on-rails

@trip = Trip.new(trip_par)

  if @trip.save
    redirect_to trips_index_path
    flash[:notice] = "success"
  else
    render trips_new_path
    flash[:notice] = "ERROR"
  end

当我从旅行中发送'form'时,我得到'成功'闪光,然后它将我发送到'trip / index'路径,但我可以从'旅行/节目'中查看。我尝试了几种组合,它仍然是相同的。我的路线:

get 'trips/show', to: 'trips#show'
get 'trips/new' 
get 'trips/edit' 
get 'trips/delete' 
get 'trips/index', to: 'trips#index'

可能是路由/操作控制器有问题还是只是我的错误?

3 个答案:

答案 0 :(得分:0)

几点评论:

  1. 您的routes.rb看起来不正确(没有解决您的观点,但会节省您的时间):get 'trips/delete'不应获取,但删除。< / LI>

    为了方便起见,我建议您将当前routes.rb的5行替换为可以执行此任务的单行resources :trips

    可以找到所有路线提示here

    1. 尝试在 redirect_to
    2. 之前发出 flash 来电
      if @trip.save
          flash[:notice] = "success"
          redirect_to trips_index_path
      else
          flash[:notice] = "ERROR"
          render trips_new_path
      end
      
      1. 您的所有Flash消息均为:notice。成功应为:success,错误应为:alert:danger,具体取决于您使用的框架或惯例。

答案 1 :(得分:0)

尝试更改您的路线:

get 'trips' => 'trips#index'

或者更容易使用“资源”,它会自动为您提供索引,节目等的所有路线...

resources: :trips

尝试在您的浏览器中将rails / info / routes附加到您的网址,以查看此类内容

http://localhost:3000/rails/info/routes

在列表中查找您的路线,或者更容易找到您可以制作这样的自定义路线

  get 'trips' => 'trips#index', as: :custom_trips_index

答案 2 :(得分:0)

问题是“旅行/索引”与“旅行/:id”匹配,因此自动跟踪我“旅行/展示”,因为旅行/ id ==旅行/显示。我手动添加它,所以我不得不删除这些不必要的路线,这没关系。感谢您的提示。