我正在学习如何将Devise flash和错误消息与Bootstrap(或者在我的案例中为Materialise)集成.我在Devise的wiki中找到了一篇关于这个主题的文章(https://github.com/plataformatec/devise/wiki/How-To:-Integrate-I18n-Flash-Messages-with-Devise-and-Bootstrap),所以我理解如何工作,但有一部分代码我有理解的问题.
html = <<-HTML
<div class="card-panel red lighten-2">
#{messages}
</div>
HTML
html.html_safe
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下<<-HTML语法吗?顺便说一句,这是完整的功能,以防您需要上下文
def devise_error_messages!
return '' if resource.errors.empty?
messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
html = <<-HTML
<div class="card-panel red lighten-2">
#{messages}
</div>
HTML
html.html_safe
end
Run Code Online (Sandbox Code Playgroud) 我正在学习 Ruby on Rails,在处理概念的同时,我也在处理语法,这在您开始 RoR 时有点奇怪。根据 Michael Hartl 的教程
当哈希是函数调用的最后一个参数时,大括号是可选的
我明白,但是当作者提到回调时,出现了这行代码:
before_save { self.email = email.downcase }
Run Code Online (Sandbox Code Playgroud)
我理解 before_save 是方法。有人可以为我分解一下论点吗?为什么你不能把大括号去掉?
我已经阅读/研究了其他答案,但我无法让它发挥作用.我有一个渲染部分的js.erb文件.我想将@node变量传递给它,但我在控制台中收到错误NameError: - undefined local variable or method "node" for #<#<Class:0x007fdcd9163510>:0x007fdcd813b728>
我不确定为什么它不会抓住它.
<div id="tagged_users">
<%= render partial: "nodes/user_tag_list", locals: { node: node } %>
</div>
Run Code Online (Sandbox Code Playgroud)
我想在js.erb中呈现的部分内容
<ul>
<% node.tagged_users.map(&:name).each do |tag| %>
<li><%= tag %>
<%= link_to "x", node_path(node, remove_tag: tag), method: :patch %>
</li>
<% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)
def update
@node = Node.find(params[:id])
if params.fetch(:node, {}).fetch(:autocomplete_tag_names, false)
tag = params[:node][:taggable_email]
@node.user_tag_list.add(tag)
@node.save
respond_to do |format|
format.js { render 'user_tag_add.js.erb' }
end
elseif
# ...
else …Run Code Online (Sandbox Code Playgroud)