我正在编辑一些代码,我看到以下内容:
<% 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分钟谷歌搜索,没有发现这个问题。
答案 0 :(得分:2)
在纯Ruby意义上,它所做的只是调用一个名为 hook 的方法,为它提供一个参数和一个块。
在查看Spree soure代码之后,是的,这是方法:http://github.com/railsdog/spree/blob/master/core/app/helpers/hook_helper.rb
如果不进一步了解,它的用途并不明显。我想是在内置模板中添加一些HTML(在这种情况下重新定义登录表单的样子)。
答案 1 :(得分:1)
在Spree中,主题钩子是一种定义Spree默认模板部分的方法,您可以在以后轻松替换或删除,而无需实际编辑模板文件。
请参阅http://spreecommerce.com/documentation/customization.html#hooks
上的文档在上面的示例中,挂钩名为:login 。如果您想在登录表单之前添加标题,可以使用钩子来实现此目的而无需修改模板。
添加此...
class YourAppHooks < Spree::ThemeSupport::HookListener
insert_before :login, :text=>'<h1>Ahoy!!!</h1>'.html_safe
end
...到文件......
RAILS_ROOT /供应商/扩展/ your_app / LIB / your_app_hooks.rb