2012-07-27 4 views
0

У меня есть два контроллера, которые отображают один вид, и мне нужно, чтобы представление менялось в зависимости от моего контроллера. Что я имею в виду, это иметь JS var в моем представлении, который я могу установить в зависимости от того, какой контроллер был вызван.Как установить js var из контроллера рельсов?

Чтобы быть немного более тщательно на мои объяснения, мне нужно, чтобы получить значение строки набора внутри вар, так что я могу использовать его, как это (в части JS на application.js):

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

Любые подсказки? До тех пор, пока я не узнал, что я нашел Rails довольно легко.

EDIT

Мне нужно объяснить немного больше.

У меня есть js в моем приложении application.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> 

Очевидно, это не работа ... с этим я бы мог прочитать calendar_source var и нам это в моем js, чтобы правильно установить eventSources.

ответ

1

Я думаю, что вы просто недостающие цитаты:

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

Во всяком случае мне нужен этот вид часто передачи имущества, она прекрасно работает :) Если он все еще Безразлично Не работайте, посмотрите на сгенерированный код и консоль JS (firebug, chrome debugger ...)

0

Вобще:

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

На вид? Откуда появляется @your_value? Я 3-х недельный программист Rail (много лет в другом месте). Я имею в виду, какой контроллер будет это делать? –

+0

Да, это должно жить в представлении, это код js правильно? @value должно быть создано в вашем контроллере – apneadiving

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> 
Смежные вопросы