Rails 3.0 - js.erb不会被渲染

时间:2012-02-27 20:02:15

标签: ruby-on-rails ruby ruby-on-rails-3

在我的index.js.erb中,我有:

alert('asdasd');

在我的控制器中我有:

def index
  @konkurrencer = Konkurrencer.find(:all).paginate(:page => params[:page], :per_page => 2)
  respond_to do |format|
    format.html
    format.js{
      render :text => "alert('hello')"
    }
  end
end

我已经包含了jquery和jquery_ujs。为什么我看不到任何警告信息?

3 个答案:

答案 0 :(得分:3)

如果您尝试通过浏览器访问索引方法,它将无法工作,因为它不是ajax请求。 如果您想尝试学习AJAX,请创建一个指向另一个具有remote = true属性的方法的链接,这将发送一个AJAX请求。 以下是控制器的外观:

def index 
end

def show
end

观点:

index.html.erb

<%= link_to  "Click here" , "/controller/show" , remote: true %>

show.js.erb

  

alert(“Hello,AJAX!”);

然后开始玩更复杂的东西。

答案 1 :(得分:1)

如果希望视图呈现index.js.erb文件,则不希望包含render :text => "alert('hello')"。 Rails一次只能渲染一个东西,所以它的任何一个或者。

另外,我必须看到正在触及索引操作的AJAX请求,以解决为什么它似乎不起作用。

如果您在浏览器中访问index.js,并且如上所述删除了渲染代码,则应该会看到警告框。

答案 2 :(得分:0)

如果你想从控制器渲染JS,你需要用标签包围它,否则浏览器会把它渲染成一个字符串。

  render :text => "<script>alert('hello')</script>"

但一般来说,不建议使用js模板进行此类渲染。