小编mik*_*416的帖子

以<< - HTML开头的ruby块

我正在学习如何将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 ruby-on-rails devise

5
推荐指数
1
解决办法
586
查看次数

为什么在 Rails 回调上使用大括号?

我正在学习 Ruby on Rails,在处理概念的同时,我也在处理语法,这在您开始 RoR 时有点奇怪。根据 Michael Hartl 的教程

当哈希是函数调用的最后一个参数时,大括号是可选的

我明白,但是当作者提到回调时,出现了这行代码:

before_save { self.email = email.downcase }
Run Code Online (Sandbox Code Playgroud)

我理解 before_save 是方法。有人可以为我分解一下论点吗?为什么你不能把大括号去掉?

ruby-on-rails callback

2
推荐指数
1
解决办法
760
查看次数

Rails 4将局部变量获取到js.erb文件

我已经阅读/研究了其他答案,但我无法让它发挥作用.我有一个渲染部分的js.erb文件.我想将@node变量传递给它,但我在控制台中收到错误NameError: - undefined local variable or method "node" for #<#<Class:0x007fdcd9163510>:0x007fdcd813b728>

我不确定为什么它不会抓住它.

_node.html.erb(节点是此局部变量的局部变量):

<div id="tagged_users">
  <%= render partial: "nodes/user_tag_list", locals: { node: node } %>
</div>
Run Code Online (Sandbox Code Playgroud)

我想在js.erb中呈现的部分内容

_user_tag_list.html.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)

节点#update controller动作:

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)

ruby-on-rails ujs ruby-on-rails-3 ruby-on-rails-4

2
推荐指数
1
解决办法
2880
查看次数