2

目前,我試圖讓我的Rails應用單一分頁的局部視圖,但我有一些問題,泛音渲染..現在,這裏是我的控制器代碼:渲染通過AJAX在Ruby on Rails的

class WelcomeController < ApplicationController 

    def create 
     @welcome = WelcomeController.new 
     render :partial => 'enjoy' 
    end 

    def index 
     if params[:id] == 'enjoy' 
      @partial_view = 'enjoy' 
     elsif params[:id] == 'about' 
      @partial_view = 'about' 
     else 
      @partial_view = 'main' 
     end 
    end 

end 

所以這個控制器是鏈接到我的觀點,併爲頁面更改我在索引操作中使用的代碼,但現在我試圖在創建操作中使用的東西。我index.html.slim我在哪裏試圖調用創建操作的代碼是:

 div id="content" 

     = form_tag(:url => {:action => 'create'}, 
       :update => "content", :position => :bottom, 
       :html => {:id => 'subject_form'}, 
       :remote => true) 

      = submit_tag 'Add' 

所以按鈕點擊「添加」,我期待從_enjoy.slim.html的內容,這是我的部分進入ID爲「內容」的div,但是當按鈕被點擊並且_enjoy.html.slim被渲染時,它會加載到整個index.html.slim頁面的頂部......所以我被卡住了,我怎樣才能使它加載到某些div?

由於一噸的人誰回答這個{:

+0

是否運行軌道的版本? – Hesham

回答

3

控制器:

class WelcomeController < ApplicationController 

    def create 
    @welcome = WelcomeController.new 
    # Remove the render 
    end 

    def index 
    # No change 
    end  
end 

查看:

div id="content" 

= form_tag({:action => 'create'}, :id => 'subject_form', :remote => true) do 
    = submit_tag 'Add' 

創建歡迎/ create.js.erb和下面的行添加到它:

$('#content').html("<%= j render(:partial => 'welcome/enjoy') %>")

+0

非常感謝! <3我只是想知道,是否可以使用create.js.slim文件運行它?因爲我測試過它並沒有發生; [ – victor175

+0

也許?嘗試將文件重命名爲create.js.slim。您必須將內容更改爲:$('#content')。html(「#{j render(:partial =>'welcome/enjoy')}」)' – Hesham

+0

嗯..爲什麼#{j renderer ...而不是= {j渲染器..? – victor175

3

您必須添加一個create.js.erb文件在你的「歡迎」 views目錄有你有渲染每AJAX部分:

$("#content").html("<%= j render(:partial => 'welcome/enjoy') %>"); 

和你不得不給JavaScript響應控制器的創建操作:

def create 
... 
respond_to do |format| 
    format.js 
end 
end