Итак, у вас есть .js.erb, чтобы вы могли встраивать код ruby в ваш js, который будет выполняться и выводить js в середину файла. Может быть, этот ответ слишком очевиден.
Одна из причин, по которой вы можете захотеть сделать это, - использовать помощник asset_path для встраивания пути к другому активу приложения в строковый литерал js. Я думаю вы также можете использовать url_for или другие помощники по маршруту, скажем, для встраивания URL-адреса определенного действия приложения в строковый литерал JS. Но я не пробовал этого, , а не , каждый обычный вспомогательный метод Rails доступен в ERB-ресурсах, только подмножество, и они не всегда работают точно так же, как обычные помощники.
То, что вы можете не сделать, - это то, что вы предлагали изначально, встроить ruby, который является условным для текущего запроса или текущей страницы. Это связано с тем, что ресурсы в конвейере ресурсов не компилируются (то есть выполняются) для каждого запроса (по крайней мере, обычно не в производстве), а вместо этого они компилируются только один раз в течение срока службы приложения и кэшируются - поэтому в момент скомпилировано и кэшировано, нет «текущего» запроса или страницы или параметров запроса.
В общем, .js.erb, вероятно, используется не слишком часто, он существует только для согласованности и на тот случай, если вам это нужно. Вероятно, есть и другие странные случаи, когда было бы удобно иметь код Ruby, генерирующий код JS в активе, даже без использования вспомогательных методов url. Так почему бы не сделать это возможным, так как конвейер активов означает, что активы в любом случае проходят некоторую обработку / выполнение, просто естественно позволить вам отправлять их через ERB, если хотите.