Как получить переменную по имени в mixin - PullRequest
1 голос
/ 17 января 2012

Форма (частичная):

include ../mixins/form-helpers

form(action='/users/create', method='post')

  div.fields

    fieldset

      mixin field('text', 'email', 'Email')
      mixin field('password', 'password', 'Password')
      mixin field('password', 'password_confirmation', 'Confirm password')
      mixin field('username', 'username', 'Username')

  mixin submit('Register')

Полевой миксин выглядит так:

mixin field(type, n, label)
  .clearfix
    label(for='#{n}') #{label}
    .input
      input#password.span8(name=n, type=type, value=user[name])

Контроллер:

(req, res)->

  user =
    email: 'someemail'
    password: ''
    password_confirmation: ''
    username: 'someusername'

  res.render 'users/new',  user:user

Я пытаюсь сделать поле mixin немного более общим, чтобы я мог использовать его снова. Я ищу способ заменить "user [name]" на "generic [name]"

1 Ответ

1 голос
/ 19 января 2012

Вы можете установить переменную внутри шаблона в нефрите с тире (-)

Таким образом, если вы используете универсальный [name], вы можете сделать следующее в вашей форме:

-var generic = user;

include ../mixins/form-helpers

form(action='/users/create', method='post')

  div.fields

    fieldset

      mixin field('text', 'email', 'Email')
      mixin field('password', 'password', 'Password')
      mixin field('password', 'password_confirmation', 'Confirm password')
      mixin field('username', 'username', 'Username')

  mixin submit('Register')
...