2010-05-13 4 views
1

Je rends une vue partiellement comme ça.comment j'écris des méthodes d'action pour des vues partielles?

<%= render(:partial => "index" ,:controller=>"controller_name") %> 

donc ce sera partiellement render nom_contrôleur/_index.html.erb

est mon doute ici. puis-je écrire une méthode d'action pour ce _index. quelque chose comme ça?

class ControllerNameController < ApplicationController 
    def _index 
    end 
end 

merci.

Répondre

10

Non, ce devrait être

class ControllerNameController < ApplicationController 
    def index 
    render :partial=>'index' 
    end 
end 

ÉDITÉ: Expliquer ma réponse en détail - Lorsque vous écrivez une méthode method_name et vous ne render (redirect_to) quoi que ce soit, le contrôleur recherchera la page method_name.html.erb par défaut. Toutefois, en utilisant render :partial comme indiqué ci-dessous, l'action fonctionnera à la place avec le partiel.

Par exemple

class ControllerNameController < ApplicationController 
    def some_method_name 
    render :partial=>'index' #look for the _index.html.erb 
    end 
end 


class ControllerNameController < ApplicationController 
    def some_method_name 
    render :action=>'index' #look for the index.html.erb 
    end 
end 


class ControllerNameController < ApplicationController 
    def some_method_name #look for the "some_method_name.html.erb" 

    end 
end 
+0

donc vous dire que je devrais avoir les deux index et _index? deux fichiers à la place d'un ..? – ZX12R

+0

Non quand vous écrivez "render: partial => 'index'" alors il ne cherchera que _index.html.erb il se fout simplement de ce qui est dans index.html.erb – Salil

+0

merci ... c'était vraiment clair. . !! – ZX12R

Questions connexes