2012-10-19 77 views
2

我想使用UJS和Rails 3渲染視圖,但實際上並不工作。我讀過很多教程,但似乎無法得到此。下面是一些代碼片段:使用Rails和unobstrusive渲染新視圖javascript

index.js.erb的

"<%= render user_path(@this_user) %>" 

的index.html

<%= form_tag users_path, :method => :get, :remote => true do %> 
    <%= submit_tag "Test", :name => nil, :class => "btn" %> 
<% end %> 

users_controller.rb

def index 
    @users = User.all 
    @this_user = User.find(1) 
respond_to do |format| 
    format.html # index.html.erb 
    format.js 
    format.json { render json: @users } 
end 
end 

每次我點擊 「測試」 ,我得到以下輸出:

對於127.0.0.1 2012-10-19 11:31:49 -0700開始GET「/ users?utf8 =%E2%9C%93」處理UsersController#index as JS參數: {「utf8」用戶負載(0.4ms)SELECT「users」。* FROM「users」
用戶負載(0.2ms)SELECT「users」。* FROM「users」WHERE「users」。「id」= $ 1 LIMIT 1 [[「id」,1]]渲染用戶/ index.js.erb(1.8ms) 已完成500內部服務器錯誤6ms

ActionView :: Template :: Error(部分名稱/ 1)不是 有效的Ruby標識符;請確保您的部分名稱以 字母或下劃線開頭,後面跟着字母, 數字或下劃線的任意組合。): 1:「<%= render user_path(@this_user)%>」app/views /用戶/ index.js.erb的:1: _app_views_users_index_js_erb__2145063269526192522_70203075823780'
app/controllers/users_controller.rb:9:in
索引」

似乎它在尋找一個部分;但是我只是希望它執行與用戶控制器上的「show」操作相關聯的視圖。這是一個全新的頁面。

我在做什麼錯?第一步是渲染一個全新的視圖,但我計劃在「演示」頁面內呈現局部視圖後,我解釋清楚。

在此先感謝您的幫助!

回答

0

看index.js.erb的:

<%= render user_path(@this_user) %> 

即告訴Rails的渲染與user_path(@this_user)值的名字的部分。

您查看文件index.js.erb需要返回JavaScript。因此,下面將工作:

alert('The Id of this User Object is: <%= @this_user.id %>'); 

在未來,你可以渲染的部分(包含JavaScript代碼)通過執行以下操作:

$("#popup").html("<%= escape_javascript(render(:partial => 'show_sold_out_popup') %>");