在我的文章索引页面上,我有一个条件来显示文章的数量,‘文章’这个词中的语法会根据这个数量而变化.这与当前版本一样有效.具体如下:

view/article/index.html.erb

<h1>All Article Page</h1>

<% if Article.count == 1%>
This blog has <%= Article.public_count %> article so far!
<% elsif Article.count >= 2 %>
This blog has <%= Article.public_count %> articles so far!
<% else %>
<%= Article.public_count %> articles, so lonely :(
<% end %>

我将如何创建自定义方法或函数来应用上面的内容,而不必在将来重复地在不同的视图上写出所有这些内容,坚持干.我知道分音,但我想知道,考虑到它是一个高度自以为是的系统,是否有一种更像Rails的方法来做到这一点.

经过研究后,我不清楚它是应该放在我的文章模型、配置/初始化器中,还是应该放在我的应用程序/控制器中.

例如,该方法类似于下面的内容,它保存在一个名为‘文章_计数.rb’的文件中.然后在索引视图中调用,但是不会发生任何情况:

def display_article_count_string
  if Article.count == 1
    p "This blog has #{Article.public_count} article so far!"
  elsif Article.count >= 2
    p "This blog has #{Article.public_count} articles so far!"
  else
    p "0 articles, so lonely :("
  end
end

推荐答案

对于简单和不复杂的逻辑,视图逻辑可以进入您的Rails项目的app/helpers.

对于您的文章控制器,助手文件将位于app/helpers/articles_helper.rb

module ArticlesHelper

  def display_article_count_string
    if Article.count == 1
      p "This blog has #{Article.public_count} article so far!"
    elsif Article.count >= 2
      p "This blog has #{Article.public_count} articles so far!"
    else
      p "0 articles, so lonely :("
    end
  end

end

对于你想在不同的视图中分享的更常见的东西,app/helpers/application_helper.rb是另一个地方.

提示: 另一个有用的Rails视图帮助器是pluralize(1, 'article')方法.它可以帮助您提供资源名称More Info单数/复数形式

Ruby-on-rails相关问答推荐

使用turbo流的部分渲染在rails 7中不起作用.

如何在Rails中创建没有字符串的查询

在Ruby中按特定值合并时,将两个对象数组添加到一起

删除链接不起作用,重定向 echo 示 Ruby

尽管安装并需要 pry-rails gem,但 Rails 容器内出现未定义方法‘pry’错误

Ruby 3 动态关键字参数

Rails 模型 - 以 ID 作为自定义列的自定义主键

Ruby on Rails 7 与 React 集成

无法在生产服务器上启动 Rails 4 控制台

Ruby on Rails 取消首字母大写

fields_for 表单构建器对象为零

rspec 共享示例与共享上下文

form_tag 是否与 Simple_form 一起使用?

如何在 Rails 中验证日期以使其在今天之后?

如何禁用 HTTP 严格传输安全性?

Rails,设计认证,CSRF 问题

rails 单数资源还是复数?

Ruby on Rails:如何从显示的子资源中获取错误消息?

错误:无法在 Mavericks 上构建 gem 原生扩展

警告:运行 ruby​​ 或 gem 命令时不安全的世界可写目录