Ошибка аргументации при запросах приложений

#ruby-on-rails #ubuntu #apache2

#ruby-on-rails #ubuntu #apache2

Вопрос:

Я написал базовое приложение Rails 3, которое отображает форму и форму загрузки по определенным URL-адресам. Вчера все работало нормально, но теперь я столкнулся с несколькими проблемами, которые требуют исправления. Я постараюсь описать каждую проблему как можно лучше. Причина, по которой я их объединяю, заключается в том, что я чувствую, что все они связаны и мешают мне завершить мою задачу.

1. Не удается запустить приложение в режиме разработки По какой-то неизвестной причине я не могу запустить приложение в режиме разработки. В настоящее время я перезаписал производственный файл.rb из среды настройками из среды разработки, чтобы получить фактические трассировки стека.

Я добавил рабочий параметр RailsEnv к своему параметру VirtualHost в apache2, но, похоже, это не имеет никакого значения. Параметры ENV также не являются переменными для производства.

2. Ошибка аргументации при всех вызовах, какой бы вызов я ни выполнял, выдает это сообщение об ошибке. Файл журнала сообщает мне следующее:

Начал ПОЛУЧАТЬ «/» для 192.168.33.82 в чт 07 апреля 00:54:48 -0700 2011

Ошибка аргументации (неправильное количество аргументов (1 вместо 0)):

Визуализировано /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_trace.отрисовка ошибок (1.0 мс) /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.отрисовка ошибок (4.1 мс) /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/diagnostics. ошибка при спасении / компоновке (8,4 мс)

На самом деле это ничего не значит для меня. Я понятия не имею, что происходит не так. В настоящее время у меня есть только один контроллер, который выглядит следующим образом:

 class SearchEngineController < ApplicationController
  def upload
  end

  def search
    @rows = nil
  end

  # This function will receive the query string from the search form and perform a search on the
  # F.I.S.E index to find any matching results
  def query
    index = Ferret::Index::Index.new :path => "/public/F.I.S.E", :default_field => 'content'
    @rows = Array.New
    index.search_each "content|title:#{params[:query]}" do |id,score, title|
      @rows << {:id => id, :score => score, :title => title}
    end

    render :search
  end

  # This function will receive the file uploaded by the user and process it into the
  # F.I.S.E for searching on keywords and synonims
  def process
    index = Ferret::Index::Index.new :path => "public/F.I.S.E", :default_field => 'content'
    file = File.open params[:file], "r"
    xml = REXML::Document.new file
    filename = params[:file]
    title = xml.root.elements['//body/title/text()']
    content = xml.root.elements['normalize-space(//body)']
    index << { :filename => filename, :title => title, :content => content}
    file.close
    FileUtils.rm file
  end
end
  

Маршрутизация моего приложения имеет следующую настройку: Опять же, все это довольно просто и, вероятно, может быть сделано лучше.

 Roularta::Application.routes.draw do
  # define all the url paths we support
  match '/upload' => 'search_engine#upload', :via => :get
  match '/process' => 'search_engine#process', :via => :post

  # redirect the root of the application to the search page
  root :to => 'search_engine#search'

  # redirect all incoming requests to the query view of the search engine
  match '/:controller(/:action(/:id))' => 'search_engine#search'

end
  

Если кто-нибудь может определить, что не так и почему это приложение не работает, пожалуйста, дайте мне знать. При необходимости я могу отредактировать этот редактор и включить дополнительные файлы, которые могут потребоваться для решения этой проблемы.

РЕДАКТИРОВАТЬ мне удалось продвинуться дальше, переименовав одну из функций контроллера. Я переименовал search в create, и теперь я возвращаю ошибки HAML. Возможно, я использовал ключевое слово …?

Ответ №1:

вау, наконец-то найдены решения….

Кажется, я использовал ключевые слова для определения своих действий, и Rails это не понравилось. Это решило проблему 2.

Проблема 1 была решена путем добавления Rails.env= ‘development’ в файл environment.rb