0

我有 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 并使用它来正确设置 eventSources。

4

3 回答 3

1

我认为您只是缺少引号:

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

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

于 2012-07-28T01:45:42.837 回答
0

做就是了:

if (<%= @your_value.to_json %> == "controller1")
于 2012-07-27T22:19:56.483 回答
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>
于 2012-07-27T23:44:14.110 回答