سؤال

Desktop application sends a request to my Rails application like

http:/server/import?type=catalog&mode=init

http:/server/import?type=catalog&mode=file&filename=

http:/server/import?type=catalog&mode=import&filename=

Now my controller looks like

class ImportsController < ApplicationController
    include ImportsHelper
    skip_before_filter :verify_authenticity_token
  def index
    type = params[:type]
    mode = params[:mode]
    if type == "catalog"
        case mode
        when 'checkauth'
            generate_cookie
        render :text => "success\nimport_cookie\n#{set_cookie}\n"
      when 'init'
        render :text => "zip=yes\nfile_limit=52428800"
      when 'file' #uploadfile
                tempfile = Tempfile.new("importupload")
                tempfile.binmode
                tempfile << request.body.read
                tempfile.rewind
                import_params = params.slice(:filename, :type, :head).merge(:tempfile => tempfile)
            importf = ActionDispatch::Http::UploadedFile.new(import_params)
                @import = Import.new
                @import.filename = importf
                @import.cookie = cookie[:import_cookie]
                @import.save
        render :text => "success\n"
      when 'import'
        render :text => "232\n"
      else
        render :text => "wrong response\n"
      end
    else
        render :text => "wrong response\n"
    end

  end
end

How can I split def to control looked

class ImportsController < ApplicationController
    include ImportsHelper
    skip_before_filter :verify_authenticity_token
  def checkauth

  end

  def init

  end

  def file

  end

end

Is this possible with routes.rb?

هل كانت مفيدة؟

المحلول

class ImportsController < ApplicationController
  include ImportsHelper
  skip_before_filter :verify_authenticity_token

  def index
    if %w(checkauth file init import).include? params[:mode]
      send(params[:mode])
    else
      render :text => "wrong response\n"
    end
  end

  private 

  def checkauth
    ...
  end

  def import 
    ...
  end 

  def init
    ...
  end

  def file
    ...
  end
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top