图片和<div>从Rails模型中拉出

时间:2016-02-06 03:00:10

标签: ruby-on-rails

当我查看诸如www.dribble.com等网站的源代码时,我发现每个图像都有自己的<div>,但是当我从我的rails模型中提取图像时,如下所示: :

<div class="article">
 <% @articles.in_groups_of(5, false).each do |group| %>
  <div class="row">
   <% group.each do |article| %>
    <div class="col-md-2">
       <%= link_to image_tag(article.artwork.thumb), ?? %>
       <%= sanitize(article.title) %>
    </div>
   <% end %>
  </div>
 <% end %>
</div>

<%= will_paginate @articles %>

图像是单个<div>。 Instagram的源代码还显示,用户在其主页中的9张照片是单张<div>,Instagram和他们的照片布局看起来与从Rails模型中提取的图像非常相似。

这是否意味着无法从Rails模型中提取图像并使它们像您在www.dribble.com上看到的那样花哨/响应?

此外,其他允许您使照片响应/幻想的语言也能让您从模型中提取图像,或者像www.dribble.com这样的网站必须手动编码每个<div> /图片?我问,因为在每个初学者的教程中,我看到java / html都是手工编写imgs到代码中,我还没有看到任何从模型/数据库中提取图像的例子就像他们在Rails中那样做教程。

作为奖励,在上面的代码中,我试图弄清楚两件事:

  1. rb.6如何创建指向文章ID的链接,&#34; example.com/article/1"

  2. rb.6如何创建指向:title列中附加网址的链接。该标题将在标题栏下输入我的表单<a href="http://cnn.com">Foo Bar</a>,然后在rb.7中清理为&#34; Foo Bar&#34;。

  3. 谢谢。

1 个答案:

答案 0 :(得分:0)

您对Rails / CSS的作用感到困惑。

我们对图片使用Paperclip;无论你使用它还是Carrierwave都没关系 - 模式是一样的。

图像保存在硬盘驱动器上(在Web服务器本地,或在S3等外部),Paperclip / Carrierwave然后存储对数据库中图像的引用。当您通过Rails调用图像时,您只需通过数据库和数据库提取image.jpg数据。最终是硬盘。

图像的风格化完全取决于您:

<%= content_tag :div, class: "article" do %>
  <% @articles.in_groups_of(5, false).each do |group| %>
    <%= content_tag :div, class:"row do %">
      <% group.each do |article| %>
        <div class="col-md-2">
          <%= link_to image_tag(article.artwork.thumb), article %>
          <%= sanitize(article.title) %>
        </div>
      <% end %>
    <% end %>
  <% end %>
<% end %>

由于上述内容看起来很混乱,您可能希望采用haml

.class
  - @articles.in_groups_of(5, false).each do |group|
    .row
      - group.each do |article|
        .col-md-2
          = link_to image_tag(article.artwork.thumb), article 
          = sanitize article.title
  

如何创建指向文章id的链接

您应该阅读link_to - 您只需要传递“输出”后跟URL。由于Rails使用resourceful routing结构,您将能够直接传递article对象:

link_to "Text", article                #-> <a href="example.com/articles/[[id]]">Text</a>
link_to "Text", articles_path(article) #-> <a href="example.com/articles/[[id]]">Text</a>

这认为您在路线中设置了以下内容:

#config/routes.rb
resources :articles

-

  

如何创建指向附加在:标题栏

中的网址的链接

不确定你在问什么;如果您想将block传递给link_to,可以使用:

= link_to article do
  = image_tag article.artwork.thumb
  = sanitize article.title

...将产生:

<a href="http://example.com/articles/[[id]]">
  <img src="..." />
  Title
</a>
  

让他们喜欢/反应

完全是CSS问题。