Аз съм по-нова от релси и се сблъсквам със сложен проблем, опитвайки се да използвам променливия в рубинен помощен метод в coffeescript в haml шаблон.
Ето моя код в haml
:coffee
$("input#field").blur ->
input = $("input#field").val()
#{ ruby_method( input )}
ruby_helper.rb
def ruby_method (arg)
if arg
@model = Model.new(arg)
end
end
Това води до грешка по-долу
недефинирана локална променлива или метод
Също така изпробвах променливата на примера
:coffee
$("input#field").blur ->
@input = $("input#field").val()
#{ ruby_method( @input )}
Това не може да премине към помощния метод.
Как мога да получа JavaScript променлива в рубински помощник метод?
Благодаря предварително!
Отговори:
1 за отговор № 1Краткият отговор е, че можете да "т." Ruby работи на вашия сървър, но всеки JavaScript (който CoffeeScript излъчва), който поставите в шаблона си, ще се изпълни в браузъра.
Всичко, което поставите вътре coffee:
блок трябва да бъде валиден CoffeeScript. Както други са посочили в коментари, ако искате Rails да направи нещо чрез JS, имате нужда от Ajax.
Например, за да създадете Model
с Ajax, настройте контролер с a create
действие и post
към него в JS.
За повече подробности вижте отличното Работа с JavaScript в Rails урок.
1 за отговор № 2
Кафе-скрипт и връзка с релси?
Няма никаква връзка между релсите и кафето и нищо в релсите не може да бъде получено в сценария на кафето.
Какво мога да направя тогава?
Просто създайте def.js.erb
файл във вашата папка за преглед и напишете вашия javascript код. в този файл можете да получите достъп до всички потребителски променливи в метода.
Как се нарича method.js.erb?
използвай това:
respond_to do |format|
format.js
end
това ще извика файл method.js.erb вместо файл.html.html .erb.
Надявам се, че помага