Pertanyaan Rute, pembantu jalur dan STI di Rails 4.0


Ini membuatku gila! Saya memiliki dua model Lion dan Cheetah. Keduanya mewarisi dari Wildcat.

class Wildcat < ActiveRecord::Base; end
class Lion < Wildcat; end
class Cheetah < Wildcat; end

STI digunakan di sini.

Mereka semua ditangani melalui pengontrol WildcatsController. Di sana, saya punya before_filer untuk mendapatkan type kucing liar dari params[:type] dan semua hal lain untuk menggunakan kelas yang benar.

Di dalam saya routes.rb, Saya membuat rute berikut:

resources :lions, controller: 'wildcats', type: 'Lion'
resources :cheetahs, controller: 'wildcats', type: 'Cheetah'

Jika sekarang saya ingin menggunakan penolong jalan, yang saya dapatkan dari rute (lions_path,lion_path,new_lion_path, dll.), semuanya berfungsi seperti yang diharapkan, kecuali show dan new jalur. Sebagai contoh lions_path mengembalikan jalur /lions. Itu new jalan kembali /lions/new?type=Lion. Sama dengan show jalan. Ketika saya mencoba masuk /lions/new ke domain root saya dengan benar menambahkan param tipe di latar belakang.

Jadi, pertanyaan saya adalah, mengapa Rails menambahkan type parameter ke url jika saya menggunakan helper jalan? Dan mengapa hanya untuk new dan show?

Saya menjalankan Rails 4.0.0 dengan Ruby 2.0 menggunakan aplikasi Rails yang baru.


7
2017-09-23 15:35


asal


Jawaban:


Mengapa menggunakan type? Mengapa tidak menggunakan pengontrol yang diwariskan?

resources :lions
resources :cheetahs

Kemudian

class LionsController < WildCatsController
end

class CheetahController < WildCatsController
end

class WildCatsController < ApplicationController
  before_filter :get_type

  def index
    @objs = @klass.scoped
  end

  def show
    @obj  = @klass.find(params[:id])
  end

  def new
    @obj  = @klass.new
  end

  # blah blah

  def get_type
    resource = request.path.split('/')[0]
    @klass   = resource.singularize.capitalize.constantize
  end

7
2017-09-23 15:41



Saya baru saja mengalami masalah ini. Anda dapat mencoba mematikan server, menghapus direktori / tmp dan memulai kembali.

Rute rel dan parameter pengontrol


-2
2017-11-14 18:34