我现在只想尝试使用Rails学习一些jQuery。我在这里关注这个例子:
Ideas on simple 'Hello World' Rails-Ajax Example?
我的观点如下: /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
之间切换顺序我在这里遗漏了一些非常基本的东西吗?
感谢。
答案 0 :(得分:1)
尝试将/views/main/ajax_msg.js重命名为/views/main/ajax_msg.js.erb,以便该文件可以处理嵌入式Ruby?
为了调试并确保它呈现嵌入式ruby,你可以尝试在那里做任何其他字符串:
jQuery('#div_hello').html("<%= puts 'blah' %>");
我认为这是问题所在。
答案 1 :(得分:0)
1)文件应该被称为js.erb,因为,obvioulsy,如果你在里面使用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 %>")