ArgumentError в запросах приложений - PullRequest
2 голосов
/ 07 апреля 2011

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

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

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

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

Начат GET "/" для 192.168.33.82 в Чт 07 Апр 00:54:48 -0700 2011

ArgumentError (неправильный номер аргументы (1 для 0)):

Вынесено /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1,0 мс) отображается /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (4.1ms) Оказывается /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb в пределах спасения / макета (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

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

EDIT Мне удалось продвинуться дальше, переименовав одну из функций на контроллере. Я переименовал поиск в создание, и теперь я получаю ошибки HAML. Возможно, я использовал ключевое слово ...?

1 Ответ

0 голосов
/ 07 апреля 2011

woot, наконец-то нашел решение ....

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...