如何使用ROR从控制器操作调用javascript函数

时间:2015-02-09 07:12:43

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

有人可以帮我解决一个小问题吗?实际上我想从控制器动作方法中调用一些javascript函数。我已经编写了一些代码但它没有工作。因为我对ROR全新,可能是我做错了somewhere。请检查下面的代码片段并修改它们以成功运行它们。

我的代码段如下。

视图/用户/ 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>

控制器/ users_controller.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

的application.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);
}

的routes.rb

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

请帮帮我..谢谢。

1 个答案:

答案 0 :(得分:0)

尝试更改链接以使用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

希望这能提供一些帮助。