代码之家  ›  专栏  ›  技术社区  ›  Milind

Rails 4-为什么我的控制器操作同时执行html和json响应,如日志所示

  •  2
  • Milind  · 技术社区  · 7 年前

    我有一个Rails 4动作 respond_to 块但是在日志中,我可以看到动作呈现了两次——一次用于html,另一次用于json。我想知道这是什么原因造成的。此外,id属性如下所示: [object object] 即使发送了一个简单的字符串-如下所示- Parameters: {"id"=>"[object Object]"} 在服务器日志中。

        ###my route code
    
        get 'halls/:id' => 'home#show_by_location', as: :show_by_location
    
        ####my homecontroller code
    
        def show_by_location    
    
        if params[:id] and params[:id].present?
    
          ##get only halls address as addressable
          @filter_results_found = false
          if params[:capacity].present?
            ####some business logic added
            @result = ##GETTING SOME RESULT HERE
            if @result.size == 0
              flash.now[:notice] = "No details found" 
            end   
          end
          if params[:food_type].present?
             ###some business logic added
             @result = ##GETTING SOME RESULT HERE
            if @result.size == 0
              flash.now[:notice] = "No halls found in #{@show_by_parameter.capitalize} that allow only #{food_type}" 
            end   
          end
    
          if params[:rating].present?
            @result = ##GETTING SOME RESULT HERE
            flash.now[:notice] = "No details found in #{@show_by_parameter.capitalize} with rating of #{rating} star(s)"  if @halls.size == 0
          end
          if params[:pricing].present?
            @result = ##GETTING SOME RESULT HERE
          end
        end
          if @filter_results_found  === false
            @result = ##GETTING SOME RESULT HERE
          end        
          @result = @result.paginate(:page => params[:page])
    
      end
    
    
    
        ####development/server log
    
        Started GET "/halls/Sydney" for 43.242.228.212 at 2017-12-10 07:28:11 +0000
        Cannot render console from 43.242.228.212! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
        Processing by HomeController#show_by_location as HTML
          Parameters: {"id"=>"Sydney"}
    
          ########other logs removed.....
          .........
          ...again below is json rendering for same action
    
    
    
    
        Started GET "/halls/[object%20Object]" for 43.242.228.212 at 2017-12-10 07:28:24 +0000
        Cannot render console from 43.242.228.212! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
        Processing by HomeController#show_by_location as JSON
          Parameters: {"id"=>"[object Object]"}
    

    我认为这不是一个好兆头,这会导致我的服务器处理我真正不需要的相同数据。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Milind    7 年前

    最终,我发现了问题所在。我发布它是为了帮助面临类似问题的人。

    问题

    我正在使用 jquery fileupload plugin 在我的表单上,随时随地上传图像和视频。现在,该插件在脚本中有一个ajax(json)调用,该脚本是加载页面上现有图像/视频所必需的。 因此,如果加载脚本,它总是调用ajax 我在清单应用程序中添加了js文件。js。因此,每个请求都从脚本中调用+json调用。

    解决方案

    我必须删除js文件,然后只在需要的地方将其显式包含在表单页面中。这还包括在中添加新条目 assets.rb 单独加载脚本,而不是加载资源管道。

    Rails.application.config.assets.precompile += %w( video_upload image_upload )
    

    包括js文件 只有 在所需模板中-

    <%= javascript_include_tag "jQuery-File-Upload-9.11.2/video_upload", :media => "all" %>
    

    现在问题已经解决了,日志中也只有一个请求,表单也在使用fileupload插件

    希望这对别人有帮助。