我有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。
答案 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>