使用Rails和不引人注目的javascript渲染新视图

时间:2012-10-19 18:41:15

标签: ruby-on-rails ruby unobtrusive-javascript ujs

我正在尝试使用UJS和Rails 3简单地渲染视图,但它实际上并不起作用。我已经阅读了很多教程,但似乎无法得到这个。以下是一些代码段:

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-19开始获取“/ users?utf8 =%E2%9C%93”for 127.0.0.1   11:31:49 -0700由UsersController处理#index为JS参数:   {“utf8”=&gt;“✓”}用户负载(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)   在6毫秒内完成500内部服务器错误

     

ActionView :: Template :: Error(部分名称(/ users / 1)不是   有效的Ruby标识符;确保您的部分名称以a开头   字母或下划线,后跟任何字母组合,   数字或下划线。):       1:“&lt;%= render user_path(@this_user)%&gt;”应用程序/视图/用户/ index.js.erb的:1:在   _app_views_users_index_js_erb__2145063269526192522_70203075823780'
app/controllers/users_controller.rb:9:in
索引'

看来它正在寻找一个部分;但是我只是希望它执行与User控制器上的“show”操作相关联的视图。这是一个全新的页面。

我做错了什么?第一步是渲染一个全新的视图,但我计划在我想出这个之后在“show”页面中渲染一个局部视图。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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') %>");