Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails 4:对优化这个应用程序有什么建议吗?呈现:帖子/索引和其他_Ruby_Ruby On Rails 4_Optimization - Fatal编程技术网

Ruby Rails 4:对优化这个应用程序有什么建议吗?呈现:帖子/索引和其他

Ruby Rails 4:对优化这个应用程序有什么建议吗?呈现:帖子/索引和其他,ruby,ruby-on-rails-4,optimization,Ruby,Ruby On Rails 4,Optimization,我为这个rails 4应用程序安装了gem“rack mini profiler”,它出现了一些问题。如何优化下面的列表?我不知道如何解决它,任何帮助将不胜感激,我附上照片 PostsController.rb class PostsController < ApplicationController before_action :find_post, only: [:show, :edit, :update, :destroy, :upvote, :downvote] b

我为这个rails 4应用程序安装了gem“rack mini profiler”,它出现了一些问题。如何优化下面的列表?我不知道如何解决它,任何帮助将不胜感激,我附上照片

PostsController.rb

class PostsController < ApplicationController
    before_action :find_post, only: [:show, :edit, :update, :destroy, :upvote, :downvote]
    before_action :authenticate_user!, except: [:index, :show]


    def index
 @users = User.all

        if 
            params[:category].blank?
            @posts = Post.all.order(:cached_votes_score => :desc).paginate(page:params[:page], per_page: 8 )

        else
            @category_id = Category.all 
            @category_id = Category.find_by(name: params[:category]).id
            @posts = Post.where(category_id: @category_id).order(:cached_votes_up => :desc).paginate(page:params[:page], per_page: 8 )

        end

        if  @user = current_user

            @post = current_user.posts.build
            @purchased = Sale.where(buyer_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
      @sales = Sale.where(seller_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
        else
        end

    end

private

    def find_post
        @post = Post.find(params[:id])
        if  @user = current_user
        @purchased = Sale.where(buyer_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
      @sales = Sale.where(seller_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
        end
    end

    def post_params
        params.require(:post).permit(:title, :link, :description, :category_id, :banner, :user_id)
    end

end
class PostsController:desc).paginate(页面:参数[:页面],每页:8)
其他的
@category\u id=category.all
@category_id=category.find_by(name:params[:category]).id
@posts=Post.where(category\u id:@category\u id).顺序(:cached\u voces\u up=>:desc).分页(page:params[:page],per\u page:8)
结束
如果@user=当前用户
@post=当前_user.posts.build
@购买=销售。其中(买方电子邮件:当前用户电子邮件)。订单(“在描述时创建”)。订单(“在描述时创建”)。分页(第页:参数[:页],每页:1)
@sales=Sale.where(卖方电子邮件:当前用户电子邮件)。订单(“在描述时创建”)。订单(“在描述时创建”)。分页(第页:参数[:页],每页:1)
其他的
结束
结束
私有的
def find_post
@post=post.find(参数[:id])
如果@user=当前用户
@购买=销售。其中(买方电子邮件:当前用户电子邮件)。订单(“在描述时创建”)。订单(“在描述时创建”)。分页(第页:参数[:页],每页:1)
@sales=Sale.where(卖方电子邮件:当前用户电子邮件)。订单(“在描述时创建”)。订单(“在描述时创建”)。分页(第页:参数[:页],每页:1)
结束
结束
def post_参数
参数require(:post).permit(:title,:link,:description,:category\u id,:banner,:user\u id)
结束
结束
这是index.html

          <%= link_to "All", root_url, id:"category-color" %>
          <% Category.all.each do |category| %>

          <%= link_to category.name, posts_path(category: category.name), id:"category-color" %> 
        <% end %>



<% @posts.each do |post| %> 


      <% unless post.user.blank? %>
        <%=link_to image_tag(post.user.avatar.url(:thumb)), post.user %> <%= link_to post.user.name.capitalize, post.user %>  - <%= 'Published ' + time_ago_in_words(post.created_at) + ' ago' %> 


            <% if signed_in? %>


             <% if @current_user.pending_friends.include?(post.user) %>  
             Pending Friend Request
             <% else %>
             <% end %>   


           <% if @current_user.friends.include?(post.user)%>  
           Friend
           <% else %>
           <% end %>


           <% if post.user.pending_friends.include?(@current_user) %>
           Friend Request
           <% else %>
           <% end %>

         <% end %>      

       <% end %>      


            <% if post.user.subscribed == true %>  

               <%= link_to "Store", post.user %>

               <%= link_to post.title, post  %>

            <%= post.get_likes.size %>
                Likes

            <%= post.get_dislikes.size %>
                Dislikes

            <%= post.comments.size %>
                Comments


                <% else %>  

            <%= post.title  %><


            <%= post.get_likes.size %>
                Likes

            <%= post.get_dislikes.size %>
                Dislikes

            <%= post.comments.size %>
                Comments

                    <% end %> 


     <%= truncate( raw( sanitize(post.description, :tags => %w(table tr td), :attributes => %w(id class style) ) ), :length => 320, :omission => " ... ") %>                             


<%= link_to "Read", post_path(post) %>

    <% end %>

-  
待决好友请求
朋友
好友请求
喜欢
不喜欢
评论
<
喜欢
不喜欢
评论
%w(表tr td),:属性=>%w(id类样式)),:长度=>320,:省略=>“…”)%>


有很多问题,以下是索引控制器中的几个问题:

@category_id = Category.all 
@category_id = Category.find_by(name: params[:category]).id
第一个“Category.all”是一个很大的不必要的请求,因为您会立即替换“@Category_id”的值

@purchased = Sale.where(buyer_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
@sales = Sale.where(seller_email: current_user.email).order("created_at DESC").order("created_at DESC").paginate(page:params[:page], per_page: 1 )
在这里,对查询执行两次“订单”,这也是完全不必要的

最后,在我看来,你似乎没有利用

@users = User.all

在代码中的任何地方,您都可以将其删除。

更具体地说明问题所在exactly@Snappawapa,我在rails方面没有那么先进。主要问题是优化rails的内存使用。我注意到在heroku中,我遇到了错误R14(超过了内存配额),在研究之后,我被告知要优化应用程序。例如,如何优化
选择“类别”。*从“类别”中选择
rack mini profiler告诉我的时间为
T+114.1 ms
这是一个更合适的问题,因为如果@user=current\u user将始终为真,除非
current\u user
nil
false
,因为您只是在分配(
=/code>)
current\u user
到实例变量
@user
,而不是进行逻辑比较,这将是
=
。是的,特别是因为您似乎没有在任何地方使用或定义
@user