我有两个模型image.rb和story.rb
我试图一起订购。
stories_controller.rb看起来像这样:
def index
@stories = Story.all.order(:cached_votes_total => :desc)
@images = Image.all.order(:cached_votes_total => :desc)
@combined = (@stories + @images).sort_by {|record| record.created_at}
end
private
def story_params
params.require(:story).permit(:title, :content, :category)
end
images_controller.rb看起来像这样:
private
def image_params
params.require(:image).permit(:title, :image, :image_file_name, :category)
end
在我的index.html.erb中我尝试对它们进行排序,但我遇到了未定义的方法错误,因为它们有不同的参数。
<% @combined.each do |s| %>
...
<% end %>
有办法解决这个问题吗?
答案 0 :(得分:0)
这是一种错误的方法,不建议组合两个模型,你应该使用模型关联..例如
# Image Model
class Image < ActiveRecord::Base
belongs_to :story
end
# Image Model
class Story < ActiveRecord::Base
has_one :image
end
在控制器中..
def index
@stories = Story.find(:all, :include => :image).order(:cached_votes_total => :desc)
end
,最后在视图中
<% @stories.each do |story| %>
# here you can access story and story.image
...
<% end %>