2016-04-02 19 views
-1

studies adlı bir modelim var. eylem yönlendirme redirect_to edit_study_path(@new_study) sonra(Rails) Düzenleme dışı 'id' nasıl yapılır url

,

URL: http://localhost:3000/studies/2/edit.

id'u geçtikten sonra bir URL'yi özelleştirmek için bir yol var mı?

Örneğin

, http://localhost:3000/study (hala düzenlemek yoluna gidiyor ve hala params :id ile)

+0

Böyle düşünmüyorum, herhangi bir paramız geçmeden. – 7urkm3n

+0

Olumsuz oylar hakkında herhangi bir geri bildirim alabilir miyim? Sorumu nasıl geliştirebilirim? – Mirror318

cevap

2

Ben ne istediğiniz geçerli çalışmayı düzenlemek için sanırım?

Bu durumda, yollarda ressources yerine ressource kullanılması mümkündür.

Bir örnek verelim: StudiesController için

#in routes.rb 
    resources :studies 
    resource :study 

varsayılan bağlantısıyla İkisi irade ve (. Sizin durumunuzda örneğin değişiklik) aynı eylemler diyoruz ama iki farklı yolları

get "/studies/:id/edit" => "studies#edit" 
    get "/study/edit" => "studies#edit" 
yılında düzenleme eylem

, daha sonra kurulum parametreleri doğru işlemek için olmalıdır:

def edit 
    @study = params[:id].nil? ? current_study : Study.find(params[:id]) 
    end 

Bir yerde bir current_study yöntemine gereksiniminiz olduğunu ve çalışmasını sağlamak için cookie/oturumlarında current_study'yi sakladığınızı unutmayın.

Örnek:

# In application_controller.rb 
def current_study 
    @current_study ||= Study.find_by(id: session[:current_study_id]) #using find_by doesn't raise exception if doesn't exists 
end 

def current_study= x 
    @current_study = x 
    session[:current_study_id] = x.id 
end 

#... And back to study controller 
def create 
    #... 
    #Eg. setup current_study and go to edit after creation 
    if study.save 
     self.current_study = study 
     redirect_to study_edit_path #easy peesy 
    end 
end 

mutlu kodlama

Yacine.

+0

Neden hala param kontrol ediyorsunuz? Kimliği paramlara ne koyardı? – Mirror318

+1

Düzenleme eyleminin iki yoluna sahip olmak istediğiniz durumda: '/ studies /: id/edit' ve'/study/edit'. Eğer sadece paraşütsüz bir rotaya sahipseniz, bu yüzden çekinizi yok sayın ve doğrudan "current_study" ;-) – Yacine

İlgili konular