有谁能帮我解决一个小问题吗?实际上,我想从controller action方法调用一些javascript函数。我已经编写了一些代码,但它不起作用。由于我对ror完全不熟悉,可能是我在某个地方犯了错误。请检查下面的代码片段并修改它们,以便成功运行这些代码。
我的代码片段如下。
视图/users/index.html.erb:

<center>
    <h1>....Testing...</h1>
    <p>
        <a href="/users/browser"><button type="button">Check Browser</button></a>
    </p>
    <p>
        <a href="/users/time"><button type="button">Check Time</button></a>
    </p>
</center>

控制器/用户控制器.rb:
class UsersController < ApplicationController
    def index

    end
    def browser
        respond_to do |format|
            format.js{render :js => "my_browser();"}
        end
    end
    def time
        respond_to do |format|
            format.js{render :js => "my_time();"}
        end
    end
end

应用程序.js:
function my_browser(){
    console.log('my browser function');
    var objOffsetVersion;
    if (objOffsetVersion=navigator.userAgent("chrome") != -1) {
        objOffsetVersion="chrome"
    };
    alert(objOffsetVersion) ;
}
function my_time(){
    var d = new Date();
    var currtime = d.getHours() * 100 + d.getMinutes();
    alert(currtime);
}

路线.rb
Jscript::Application.routes.draw do
  root :to => "users#index"
  get "users/browser" => "users#browser"
  get "users/time" => "users#time"
end

请帮帮我…提前谢谢。

最佳答案

尝试将链接更改为使用js格式,因为您特别告诉控制器通过format.js块处理js:

<center>
  <h1>....Testing...</h1>
  <p>
      <a href="/users/browser.js"><button type="button">Check Browser</button></a>
  </p>
  <p>
    <a href="/users/time.js"><button type="button">Check Time</button></a>
  </p>
</center>

作为替代方案,您可以告诉rails始终在控制器中呈现所有格式的js:
class UsersController < ApplicationController
  def index
  end

  def browser
    render :js => "my_browser();"
  end

  def time
    render :js => "my_time();"
  end
end

希望这能提供一些帮助。

关于javascript - 如何使用ROR从 Controller 操作中调用javascript函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28404547/

10-11 22:55
查看更多