2012-07-27 58 views
0

我有2個控制器呈現單個視圖,我需要視圖根據我的控制器進行更改。我想到的是在我看來有一個JS變量,我可以根據調用哪個控制器來設置。如何從軌道控制器設置js var?

要對我的解釋更徹底一點,我需要一個變種內設置一個字符串值,這樣我就可以這樣使用它(在上的application.js一塊JS的):

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

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

編輯

我需要多解釋一下。

我有一些js在我的application.js呈現一些objet。

$('#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> 

顯然它不工作......這樣我就可以讀取calendar_source var和我在我的js中正確設置eventSources。

回答

1

我認爲你只是缺少報價:

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

無論如何,我需要這種分配往往是,它完美的作品:) 如果仍然沒有按不工作,看看生成的代碼和JS控制檯(螢火蟲,鉻調試器...)

0

只要做到:

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

在視圖中? @your_value從哪裏來?我是一位3周的鐵路程序員(其他地方多年)。我的意思是,什麼控制器會渲染這個? – 2012-07-27 22:29:26

+0

是的,這應該生活在視圖中,它的JS代碼是正確的? @value應該在你的控制器中創建 – apneadiving 2012-07-27 22:39:47

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>