/ / Как да използваме локална или потребителска променлива в руби код в coffeescript в haml шаблон

Как да използваме локална или променлива на променливата в рубинния код в coffeescript в haml шаблон - ruby-on-rail, ruby, coffeescript, haml

Аз съм по-нова от релси и се сблъсквам със сложен проблем, опитвайки се да използвам променливия в рубинен помощен метод в 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.

Надявам се, че помага