【问题标题】:Rendering a new view using Rails and unobstrusive javascript使用 Rails 和不显眼的 javascript 渲染新视图
【发布时间】:2012-10-10 10:26:50
【问题描述】:

我正在尝试使用 UJS 和 Rails 3 简单地呈现视图,但它实际上并没有工作。我已经阅读了很多教程,但似乎无法理解。下面是一些sn-ps的代码:

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 日开始为 127.0.0.1 获取“/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 LIMIT 1 [["id", 1]] 渲染用户/index.js.erb (1.8ms) 在 6 毫秒内完成 500 内部服务器错误

ActionView::Template::Error(部分名称 (/users/1) 不是 有效的 Ruby 标识符;确保您的部分名称以 字母或下划线,后跟任何字母组合, 数字或下划线。): 1: "" app/views/users/index.js.erb:1:in _app_views_users_index_js_erb__2145063269526192522_70203075823780'
app/controllers/users_controller.rb:9:in
index'

它似乎在寻找部分;但是我只希望它执行与用户控制器上的“显示”操作关联的视图。所以一个全新的页面。

我做错了什么?第一步是渲染一个全新的视图,但我打算在弄清楚这一点后在“显示”页面中渲染一个局部视图。

提前感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    查看 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("&lt;%= escape_javascript(render(:partial =&gt; 'show_sold_out_popup') %&gt;");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多