我首先要说我是铁杆新手。这个问题适用于我目前正在上课的课程。课程主题是CRUD,内容是一个数据库,用于存储帖子及其标题和评论。
说明如下:
使用文本" CENSORED"覆盖每个第五个Post实例的标题。
这是我的控制者:
class PostsController < ApplicationController
def index
@posts = Post.all
end
def show
end
def new
end
def edit
end
end
这是我的观点文件:
<h1>All Posts</h1>
<% @posts.each do |post| %>
<div class="media">
<div class="media-body">
<h4 class="media-heading">
<%= link_to post.title, post %>
</h4>
</div>
</div>
<% end %>
这是我的模特:
class Post < ActiveRecord::Base
has_many :comments
end
我不确定从哪里开始,我真的很感激任何帮助。正确方向上的一点很棒。感谢。
答案 0 :(得分:1)
@posts = Post.all
@posts.each_with_index do |post, index|
if index % 5 == 4 # since index starts at 0, every 5th object will be at positions 4, 9, 14, 19 etc.
# Do the change on post object
post.update_attributes(title: 'CENSORED')
end
end
答案 1 :(得分:1)
以下是@posts = Post.all
的几种方式,并假设第一篇文章需要审核:
<强>#1 强>
e = [[:CENSOR] + [:PUBLISH]*4].cycle
#=> #<Enumerator: [[:CENSOR, :PUBLISH, :PUBLISH, :PUBLISH, :PUBLISH]]:cycle>
@posts.each {|p| p.update_attributes(title: 'CENSORED') if e.next==:CENSOR }
<强>#2 强>
(0...@posts.size).step(5) {|i| @posts[i].update_attributes(title: 'CENSORED')}
答案 2 :(得分:0)
使用each_with_index
代替each
;如果索引模5为零,则审查它。
答案 3 :(得分:0)
如果意图是显示&#34; CENSORED&#34;对于每五个元素,我要看看each_with_index:http://apidock.com/ruby/Enumerable/each_with_index
答案 4 :(得分:0)
如果@posts是数组形式
@posts.each_with_index do |post,index|
post.update!(title: "CENSORED") if index % 5 == 0
end
OR
如果@posts在您的数据库中
@posts.each do |post|
post.update!(title: "CENSORED") if (post.id % 5 == 0)
end