Ruby on Rails 3 - 操作显示路由错误,如何修复它



我正在尝试创建一个感谢页面,我的路线工作正常,因为我在 url 上对其进行了测试并且工作正常,但是当我尝试在创建操作中重定向时,我得到:

没有路由匹配 {:action=>"show", :controller=>"schedules", :locale=>:en, :id=>nil}

控制器

  def create
    @appointment = Appointment.new(params[:appointment])
      if @appointment.save
        #send email
        AppointmentMailer.appointment_confirmation(@appointment).deliver
        AppointmentMailer.new_appointment(@appointment).deliver
        redirect_to :action => "thank_you"
      else
        render :action => 'new', :alert => @appointment.errors.full_messages.split(', ')
      end
  end

  def new
    @schedule = Schedule.find(params[:id])
    @appointment = @schedule.appointments.new
  end

  def thank_you
      @appointment = Appointment.find(params[:id])
  end

路线

  scope ":locale", :locale => /#{I18n.available_locales.join("|")}/ do
    root :to => "Doctors#index"

    resources :specialties
    resources :branches
    resources :doctors do
       get 'new_schedule', :on => :member, :controller => 'schedules', :action => 'new'
    end
    # NIA: Here is the trick: we remove /shedules/new route (with :except => :new)
    # and map /doctors/new_schedule instead to SchedulesController#new action (see above)
    # (the same is done with appointments)
    resources :schedules, :except => :new do
      get 'new_appointment', :on => :member, :controller => 'appointments', :action => 'new'
    end
    resources :appointments do
      member do
        get :thank_you
      end
    end
  end
  match '*path', :to => redirect("/#{I18n.default_locale}/%{path}")
  match '', :to => redirect("/#{I18n.default_locale}")

你的路线是错误的。你想要这个(s/member/collection):

resources :appointments do
  collection do
    get :thank_you
  end
end

使用"member"时,您的感谢路由希望收到您未传递的 ID。 因此它失败了。 有了收集,这不会发生。

在进行此更改之前运行"耙子路线"以查看我在说什么......然后运行它。

相关内容

  • 没有找到相关文章

最新更新