2014-04-14 14 views
13

मैं एक नियंत्रक से .js.erb कैसे प्रस्तुत कर सकता हूं जो उस दृश्य से संबंधित नहीं है जिसमें इसे प्रस्तुत किया जा रहा है?रेल: किसी अन्य नियंत्रक से .js.erb प्रस्तुत करें?

उदाहरण के लिए: मैं अपने पन्नों में create.js.erb देखने प्रदान कर सकते हैं, एक 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

यह http://stackoverflow.com/questions/13367426/rendering-a-partial-from-a-controller-in-rails?rq=1 मदद कर सकता है – Pavan

+1

समस्या मेरे पास है .js है। एआरबी फाइल जो मैं प्रस्तुत करने की कोशिश कर रहा हूं वह एक और दृश्य फ़ोल्डर में है (निर्माण विधि post_controller में है और मैं post_controller से पृष्ठों में एक .js.erb प्रस्तुत करने की कोशिश कर रहा हूं)। कोई सुझाव? – allegutta

उत्तर

22

ऐसा लगता है वहाँ इस लक्ष्य को हासिल करने के लिए कई तरीके हैं:

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

विकल्प 2 के बारे में, मेरा मानना ​​है कि आपके पास होना चाहिए: 'format.js {प्रस्तुत करें: टेम्पलेट =>" कक्षाएं/create_differently.js.erb "}' – Henry

संबंधित मुद्दे