Что такое «крюк» Ruby / Rails? - PullRequest
2 голосов
/ 10 октября 2010

Я редактирую некоторый код и вижу следующее:

<% hook :login do %>
  <% form_tag user_session_path do  %>
    <p>
      <%= label :user_session, :login, 'Email Address' %><br />
      <%= text_field :user_session, 'login' %>
    </p>
    <p>
      <%= label :user_session, :password, 'Password' %><br />
      <%= password_field :user_session, 'password' %>
    </p>
    <p>
      <label>
        <%= check_box :user_session, :remember_me %>
        <%= label :user_session, :remember_me, 'Remember me' %>
      </label>
    </p>

    <p><%= submit_tag 'Log In' %></p>
  <% end %>

  or <%= link_to 'Create a new account', signup_path %> | <%= link_to 'Forgot Password', new_password_reset_path %>
<% end %>

Что значит

<% hook :login do %>
  ...
<% end %>

сделать

Я потратил около 5 минут на поиски в Google и ничего не нашел по этому вопросу.

Ответы [ 2 ]

2 голосов
/ 10 октября 2010

В чистом смысле Ruby все, что он делает, это вызывает метод с именем hook , предоставляя ему один аргумент и блок.

И после просмотра кода источника Spree, да,вот метод: http://github.com/railsdog/spree/blob/master/core/app/helpers/hook_helper.rb

Не глядя дальше, не очевидно, для чего это используется.Я полагаю, что это добавление некоторого фрагмента HTML во встроенный шаблон (в этом случае переопределение формы входа).

1 голос
/ 01 марта 2011

В Spree ловушки тем - это способ определения частей стандартных шаблонов Spree, которые вы можете легко заменить или удалить позже, фактически не редактируя файлы шаблонов.

См. Документацию на http://spreecommerce.com/documentation/customization.html#hooks

В приведенном выше примере ловушка называется : логин . Если вы хотите добавить заголовок перед формой входа, вы можете использовать ловушку для достижения этой цели без изменения шаблона.

Добавить это ...

class YourAppHooks < Spree::ThemeSupport::HookListener
  insert_before :login, :text=>'<h1>Ahoy!!!</h1>'.html_safe
end

... в файл ...

RAILS_ROOT / поставщик / расширения / your_app / Библиотека / your_app_hooks.rb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...