Je crée une application rails très basique pour la première fois avec 2 ressources, départements (départements) et membres. Je crois que j'ai utilisé correctement les ressources imbriquées, mais pour une raison quelconque, après l'exécution du serveur rails, l'identifiant de la ressource parent n'est pas généré/transmis correctement. Root est l'index depts # et à partir de là, je peux faire de nouveau et modifier en utilisant _form.haml rendu dans les nouvelles vues et éditer. Cependant, quand je fais/depts/3 je reçois une erreur avec "ne peut pas trouver dept avec id = 3". Cliquer sur pour éditer à partir de l'index me donne/depts/63/edit dans l'URL - je ne suis pas sûr d'où cet id = 63 vient. Essayer d'obtenir l'action 'show' en tapant/dept/63 dans l'URL ne fonctionne pas. J'ai d'abord créé Depts en propre, je l'ai fait fonctionner avec toutes les actions et vues, quelque chose s'est mal passé depuis que j'ai ajouté la ressource Membres.L'application Rails génère une erreur: id dans le contrôleur parent
routes.rb
resources :depts do
resources :members
end
depts_controller.rb
def index
@depts = Dept.all
respond_to do |format|
format.html
format.json { render :json => @depts }
end
end
def show
@dept = Dept.find(params[:dept_id])
respond_to do |format|
format.html
format.json { render :json => @dept }
end
end
def new
@dept = Dept.new(params[:dept])
respond_to do |format|
format.html
format.json { render :json => @dept }
end
end
def create
@dept = Dept.new(params[:dept])
respond_to do |format|
if @dept.save
format.html { redirect_to :action => 'index' }
format.json { render :json => @dept }
else
format.html { render :action => 'new' }
format.json { render :json => @dept }
end
end
end
def edit
@dept = Dept.find(params[:id])
end
def update
@dept = Dept.find(params[:id])
respond_to do |format|
if @dept.update_attributes(params[:dept])
format.html { redirect_to :action => 'index'}#, :id => @dept }
format.json { render :json => @dept }
else
format.html { redirect_to :action => 'edit' }
format.json { render :json => @dept }
end
end
end
def destroy
@dept = Dept.find(params[:id])
@dept.destroy
respond_to do |format|
format.html { redirect_to :action => 'index' }
format.json { render :json => @dept }
end
end
end
show.haml
%p= @dept.name
%p= link_to "back", {:action => 'index'}
index.haml
%h1 DEPARTMENTS
%ol
- @depts.each do |d|
%li= link_to d.name
%p= link_to 'edit department', edit_dept_path(d)
%p= link_to 'get rid of department!', d, :method => :delete, :id => d.id
%br
%p= link_to "ADD A NEW DEPARTMENT", new_dept_path