2014-04-14 19 views
13

Come posso eseguire il rendering di un .js.erb da un controller che non appartiene alla vista in cui verrà eseguito il rendering?Rails: esegue il rendering di un file .js.erb da un altro controller?

Per esempio: Come posso rendere create.js.erb nelle mie pagine visualizzare, da una post_controller?

post_controller.rb

def create 
    @post = Post.new(post_params) 

    respond_to do |format| 
     if @post.save 
     format.html { redirect_to @post, notice: 'Post was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @post } 
     format.js #{I think I need something in here?} 
     else 
     format.html { render action: 'new' } 
     format.json { render json: @post.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
+0

questo potrebbe aiutare http://stackoverflow.com/questions/13367426/rendering-a-partial-from-a-controller-in-rails?rq=1 – Pavan

+1

Il problema che ho è che i .js. Il file erb che sto provando a renderizzare è in un'altra cartella di visualizzazione (il metodo create è nel post_controller e sto provando a visualizzare un file .js.erb nella vista pagine dal post_controller). Eventuali suggerimenti? – allegutta

risposta

22

Sembra che ci sono diversi modi per raggiungere questo obiettivo:

respond_to do |format| 
    format.js { :location => path_to_controller_method_url(argument) } 
end 

How do you respond_to another js file in the controller using Ruby on Rails?

respond_to do |format| 
    format.js { 
     :template => "classrooms/create_differently.js.erb", 
     :layout => false 
    } 
end 

Render alternate view in ruby on rails

respond_to do |format| 
    format.js { render :file => "/path/to/save.js.erb" } 
end 
+2

Per quanto riguarda l'opzione 2, credo che dovresti avere: 'format.js {render: template =>" classrooms/create_differently.js.erb "}' – Henry

Problemi correlati