1

我现在只是想用 Rails 学习一点 jQuery。我在这里按照示例进行操作:

关于简单的“Hello World”Rails-Ajax 示例的想法?

我的视图如下所示:/views/main/ajax_msg.erb

    <div id="div_msg">
      <%= link_to "Wow",
          {:controller=>"main" , :action=>'ajax_msg' , :id=>'1'},
          :remote => true,
          :class => 'link1',
          :update => "div_hello",
          :id => 'link1'
      %>
    </div>

    <div id="div_hello">
    </div>

我的控制器看起来像这样:/controllers/main_controller.rb

    def ajax_msg
      @msg1 = "Buenos Dias!"
      respond_to do|format|
         format.html
         format.js
         format.json
      end
    end

我的 javascript 文件如下所示:/views/main/ajax_msg.js

    jQuery('#div_hello').html("<%= @msg1 %>");

我的 /views/layouts/application.html.erb 是这样开始的......

    <!DOCTYPE html>
      <html>
      <head>
         <title>SomeApp</title>

            <%= stylesheet_link_tag    "application", :media => "all" %>
            <%= javascript_include_tag "application" %>
            <%= csrf_meta_tags %>

      </head>

我的 application.js 包含...

    //= require jquery
    //= require jquery-ui
    //= require jquery_ujs
    //= require_tree .

我的控制台日志显示了这个:

    Started GET "/main/ajax_msg?id=1" for 127.0.0.1 at 2013-07-09 21:44:57 +0100
    Processing by MainController#ajax_msg as JS
    Parameters: {"id"=>"1"}
    Rendered main/ajax_msg.js within layouts/application (1.0ms)
    Completed 200 OK in 19ms (Views: 19.0ms | ActiveRecord: 0.0ms)

通过查看其他人在相关问题上的问题,我尝试了许多不同的组合,但似乎没有任何效果。我尝试了以下方法: - 在 javascript 文件中使用 $ 而不是 jQuery - 将 javascript 放入 application.js - 在 stylesheet_link_tag 和 javascript_include_tag 之间切换顺序

我在这里错过了一些非常基本的东西吗?

谢谢。

4

2 回答 2

1

尝试将 /views/main/ajax_msg.js 重命名为 /views/main/ajax_msg.js.erb 以便该文件可以处理嵌入的 Ruby?

为了调试并确保它呈现嵌入式 ruby​​,您可以尝试在其中执行任何其他字符串:

jQuery('#div_hello').html("<%= puts 'blah' %>");

我认为这就是问题所在。

于 2013-07-10T00:32:17.383 回答
0

1)文件应该被称为js.erb,因为,很明显,如果你在里面使用Ruby变量,它应该是扩展的ruby

2)从jQuery API:

Get the HTML contents of the first element in the set of matched elements or set the HTML contents of every matched element.

这意味着,如果您尝试设置页面元素,则该字符串应该用标签包装。

尝试:

$('#div_hello').text("<%= @msg1 %>")

此外,如果这不起作用,请尝试转义 javascript:

$('#div_hello').text("<%= j @msg1 %>")
于 2013-07-11T09:41:02.753 回答