0

1 つのビューをレンダリングする 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>

明らかに機能しません...これで、calendar_source varを読み取ることができ、jsでそれを使用して、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

Don't know if this is a clean way to do but here it goes:

In my application.js I put

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

Then in each controller is set a value like this:

@calendar_event_path = "company_events_index"

Then my view looks like this:

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

<div id='calendar_event_path' data-value='<%= @calendar_event_path %>'></div>
于 2012-07-27T23:44:14.110 に答える
0

ただ行う:

if (<%= @your_value.to_json %> == "controller1")
于 2012-07-27T22:19:56.483 に答える