11

嗨,我有一个菜鸟问题,我想创建以下 HTML 结果:

<a href="/controller/action" class="button-big layer">TEXT<span class="arrow-big"></span></a>

在上面的 HTML 中,我希望通过 css 在图像中设置具有跨度类的文本。

当我尝试以下实现时,结果仅反映了所需实现的一部分:

<%= link_to "TEXT", controller_path, :class => "button-big layer" %>

结果是:

<a href="/controller/action" class="button-big layer">TEXT</a>

<%= link_to(content_tag(:span, "", :class => "arrow-big"), controller_path, :class => "button-big layer") %>

结果是:

<a href="/controller/action" class="button-big layer"><span class="arrow-big"></span></a>

有谁知道如何完成?


服务器重新启动时,无法让我的 Upstart 脚本运行 Node.js 和 Forever

我最近一直在设置我的服务器,今天我不得不重新启动它......然后我意识到我运行的所有 Node 应用程序都不再运行了。我正在使用 Node Forever 模块来保持应用程序运行,但后来我意识到当我的服务器重新启动或关闭并重新启动时我仍然需要启动它们。

我一直在研究最好的方法来做到这一点,但我正在尝试的似乎并不奏效。我/etc/init/在我的 Ubuntu Server 10.04LTS 远程服务器上的文件夹中创建了一个 Upstart 脚本并尝试重新启动,但它似乎没有做任何事情。我运行时没有列出任何内容forever list

这是我今天尝试的当前 Upstart 脚本:

#/etc/init/myapp.conf

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

script

    exec sudo /usr/local/bin/node /var/www/myapp/myapp.forever.js
end script

我在 Node 脚本中使用 Forever,因为我发现按照我的意愿配置它更容易。如果我在脚本之外执行此操作,已确认脚本运行良好,但 Upstart 脚本本身存在问题。/etc/init/它似乎与文件夹中的所有其他 Upstart 脚本具有相同的权限。

作为补充说明,我已经阅读了几乎所有可以在 StackOverflow 上找到的答案,以及我如何组合我目前拥有的脚本。

更新:

有了汤姆的回答,我现在尝试了:

#/etc/init/myapp.conf

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

exec sudo /usr/local/bin/node /var/www/myapp/myapp.forever.js

但它仍然无法正常工作。

所以我不知道为什么当我重新启动服务器时它没有运行。请帮忙!

4

4 回答 4

30

您还可以使用 link_to 帮助器的替代语法嵌套标签

<%= link_to controller_path, :class=> "button-big layer" do %>
  Text
  <%= content_tag(:span, "", :class => "arrow_big" %>
<% end %>
于 2012-03-10T13:42:49.360 回答
10

只需将您的文本与“跨度”连接起来:

<%= link_to(("TEXT" + content_tag(:span, "", :class => "arrow-big")).html_safe,
             controller_path,
             :class => "button-big layer") %>

您需要 .html_safe 围绕连接,因为 + 运算符将转义 content_tag 的 HTML。

于 2012-03-10T13:20:05.233 回答
3

阅读您的问题,我确实解决了我的问题。比我提出另一种方式来回答你的问题。

您可以创建一个辅助方法来制作您需要的这种链接。会是这样的

def link_with_text_and_span(href, text, span_options= {}, link_options = {})
    span_tag = content_tag(:span, span_options[:content] || '', :class => span_options[:class] || '')
    link_to(span_tag, href, :class => link_options[:class] || '')
  end

这样做的好处是您的视图会更清晰。然后你可以在你的视图中调用这个辅助方法

  <%= link_with_text_and_span("/controller/action", "TEXT", {class: 'arrow-big'}, class: button-big) %>

PS:此代码肯定可以改进,如果其他用户想要,请这样做。

于 2015-09-16T13:41:15.910 回答
2

这是您可以在没有 content_tag 的情况下使用的另一种方式。不是最干净的,但它有效!

<%= link_to '<span class="arrow_big"></span>'.html_safe, controller_path, class: "button-big layer" %>
于 2013-09-14T23:29:46.307 回答