如何从rails控制器设置js var?

时间:2012-07-27 22:08:36

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

我有2个控制器渲染单个视图,我需要视图根据我的控制器进行更改。我的想法是在我的视图中有一个JS var,我可以根据调用的控制器进行设置。

为了对我的解释更加透彻,我需要在var中设置一个字符串值,所以我可以像这样使用它(在application.js的一个JS中):

if (value_i_set_in_controller == "controller1") {
   // do something
} else {
   // do something else
}

任何提示?直到知道我一直很容易找到Rails。

修改

我需要解释一下。

我的application.js中有一些js渲染了一些对象。

$('#calendar').fullCalendar({
...
    // a future calendar might have many sources.
    eventSources: [{
        url: '/DYNAMIC_PATH',
        color: 'yellow',
        textColor: 'black',
        ignoreTimezone: true
    }],

我只需使用日历视图来渲染它:

<div id='calendar'></div>

我想在日历视图中做这样的事情:

<div id='calendar'></div>

<script type="text/javascript">
  var calendar_source = <% @dyn_path %>;
</script>

显然它不起作用......有了这个,我就可以在我的js中读取calendar_source var和us来正确设置eventSource。

3 个答案:

答案 0 :(得分:1)

我认为你只是缺少引号:

<script type="text/javascript">
  var calendar_source = '<%= @dyn_path %>';
</script>

无论如何,我经常需要这种分配,它完美地工作:) 如果它仍然不起作用,请查看生成的代码和JS控制台(firebug,chrome调试器......)

答案 1 :(得分:0)

只是做:

if (<%= @your_value.to_json %> == "controller1")

答案 2 :(得分:0)

不知道这是否是一种干净的方式,但在这里:

在我的application.js中,我把

    eventSources: [{
        url: '/events/' + $('#calendar_event_path').data("value"),
        color: 'yellow',
        textColor: 'black',
        ignoreTimezone: true
    }],

然后在每个控制器中设置如下值:

@calendar_event_path = "company_events_index"

然后我的观点如下:

<div id='calendar'></div>

<div id='calendar_event_path' data-value='<%= @calendar_event_path %>'></div>