小编maz*_*ing的帖子

Rails 5仅限某个标签的上一篇或下一篇文章

我有一个名为posts的资源,其中有很多.但是,每个帖子可以有多个标签.我希望用户能够从所选的标签转到上一篇文章和下一篇文章.我让它适用于前一个数据库中的所有帖子,但当我点击一个标签并显示所有标签时,prev/next不符合标签的内容.

如果我访问与routes.rb中定义的代码相关联的url get 'tags/:tag', to: 'posts#index', as: :tag,它将列出索引中的所有标记.我不希望这样,我希望用户能够单击上一个或下一个,并且仅对与标签关联的帖子执行此操作.

注意:我使用的是friendly_id gem

控制器/ posts_controller.rb

  def index
    @posts = Post.all

    if params[:tag]
      @posts = Post.tagged_with(params[:tag])
    else
      @posts = Post.all
    end

  end
Run Code Online (Sandbox Code Playgroud)

车型/ post.rb

# tags 
  acts_as_taggable # Alias for acts_as_taggable_on :tags

def next
    Post.where("id > ?", id).order(id: :asc).limit(1).first
end

def prev
     Post.where("id < ?", id).order(id: :desc).limit(1).first
end
Run Code Online (Sandbox Code Playgroud)

show.html.erb

<%= link_to "? Previous Question", @post.prev, :class => 'button previous-question' %>

<%= link_to "Next Question ?", @post.next, :class => 'button next-question' %>
Run Code Online (Sandbox Code Playgroud)

的routes.rb

 # …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

10
推荐指数
2
解决办法
350
查看次数

了解导轨大小与数量,以及为什么 .size 在视图中不起作用?

当我使用 .count 方法时,它工作得很好并且准确地显示帖子数量。当我尝试 .size 时,它​​会抛出错误。为什么是这样?

我的 static_controller.rb 代码(使用COUNT作为方法)

class StaticController < ApplicationController

def index
@post_count = Post.count
@user_count = User.count
end
Run Code Online (Sandbox Code Playgroud)

index.html.erb(使用COUNT作为方法)

<div>
      <p> <%= @post_count %> </p>
</div>
Run Code Online (Sandbox Code Playgroud)

当我将 .count 的实例更改为 时size,我在本地服务器中收到此错误:

NoMethodError at / undefined method `size' for #

索引 - app/controllers/static_controller.rb,第 4 行

为什么是这样?.size 不是 Rails 的内置方法吗?如果没有,我该如何解决这个问题?

另外,如果将 counter_cache 应用于该方法所应用的模型,我是否正确理解 .size 的性能更高?例如,如果我的 post.rb 模型有一个声明 counter_cache 的部分,这是否会自动使其变得更快/性能更快?

ruby ruby-on-rails ruby-on-rails-3

6
推荐指数
1
解决办法
2424
查看次数

是否可以在Javascript中从剪贴板onclick粘贴?

该用例用于在私有Intranet上输入数据:用户从google文档,投递箱文本文档等中复制和粘贴,并且必须粘贴到具有许多输入的表单中。为了为他们加快速度,最好是用户可以从文档中复制和粘贴,当他们单击输入字段时,单击鼠标左键时它会自动粘贴。

我已经看到了一些较旧的问题,但似乎这(出于充分的理由)存在安全风险。但是,专用Intranet上的所有用户都知道这一点,只是想节省时间。是否有任何浏览器或技术可以做到这一点?

此外,我们可以使用任何支持它的浏览器或环境。然后如何实现此功能以节省时间?

javascript jquery

3
推荐指数
2
解决办法
5104
查看次数