提问人:jasdeepg 提问时间:10/20/2012 最后编辑:jasdeepg 更新时间:10/20/2012 访问量:1560
使用 Rails 和不显眼的 javascript 渲染新视图
Rendering a new view using Rails and unobstrusive javascript
问:
我试图简单地使用 UJS 和 Rails 3 渲染视图,但它实际上不起作用。我读过很多教程,但似乎不明白这一点。以下是一些代码片段:
index.js.erb
"<%= render user_path(@this_user) %>"
索引.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 为 127.0.0.1 启动了 GET “/users?utf8=%E2%9C%93” 11:31:49 -0700 由 UsersController#index 作为 JS 参数进行处理: {“utf8”=>“✓”}用户负载 (0.4ms) SELECT “users”.* FROM “users” 用户负载 (0.2ms) SELECT “users”.* FROM “users” WHERE “users”
.”id“ = $1 限制 1 [[“id”, 1]] 呈现的用户/index.js.erb (1.8ms) 在 6 毫秒内完成 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
它似乎在寻找一个部分;但是,我只想让它执行与用户控制器上的“show”操作关联的视图。所以一个全新的页面。
我做错了什么?第一步是渲染一个全新的视图,但我计划在弄清楚这一点后在“显示”页面中渲染一个部分视图。
提前感谢您的任何帮助!
答:
查看 index.js.erb:
<%= render user_path(@this_user) %>
这就是告诉 Rails 渲染一个带有值名称的部分。user_path(@this_user)
查看文件需要返回 JavaScript。因此,以下方法将起作用:index.js.erb
alert('The Id of this User Object is: <%= @this_user.id %>');
将来,您可以通过执行以下操作来呈现部分(包含 JavaScript 代码):
$("#popup").html("<%= escape_javascript(render(:partial => 'show_sold_out_popup') %>");
评论