2

UJSとRails3を使用してビューを単純にレンダリングしようとしていますが、実際には機能していません。私は多くのチュートリアルを読みましたが、これを理解できないようです。コードスニペットは次のとおりです。

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

「テスト」をクリックするたびに、次の出力が表示されます。

2012-10-1911:31:49-0700に127.0.0.1のGET"/users?utf8 =%E2%9C%93"を開始しました。JSパラメーターとしてUsersController#indexによる処理:{"utf8"=>"✓" }ユーザー負荷(0.4ms)SELECT"users"。*FROM "users"
ユーザー負荷(0.2ms)SELECT"users"。*FROM "users"WHERE"users"。"id"= $ 1 LIMIT 1 [["id" 、1]]レンダリングされたusers / index.js.erb(1.8ms)は6msで500の内部サーバーエラーを完了しました

ActionView :: Template :: Error(部分名(/ users / 1)は有効なRuby識別子ではありません。部分名が文字またはアンダースコアで始まり、その後に文字、数字、またはアンダースコアの任意の組み合わせが続くことを確認してください。 ):1: "<%= render user_path(@this_user)%>" app / views / users / index.js.erb:1:in index '_app_views_users_index_js_erb__2145063269526192522_70203075823780'
app/controllers/users_controller.rb:9:in

パーシャルを探しているようです。ただし、ユーザーコントローラーの「表示」アクションに関連付けられたビューを実行するだけです。つまり、まったく新しいページです。

私は何が間違っているのですか?最初のステップは完全に新しいビューをレンダリングすることですが、これを理解した後、「表示」ページ内に部分的なビューをレンダリングする予定です。

助けてくれてありがとう!

4

1 に答える 1

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') %>");

于 2012-10-19T19:00:53.840 に答える