应用程序请求的ArgumentError

时间:2011-04-07 08:02:36

标签: ruby-on-rails ubuntu apache2

我编写了一个基本的Rails 3应用程序,它在特定的URL上显示表单和上传表单。昨天一切正常,但现在我遇到了几个需要修复的问题。我会尽力尽力描述每个问题。我合并它们的原因是因为我觉得它们都是相关的并阻止我完成任务。

1。无法在开发模式下运行应用程序 由于某些未知原因,我无法让应用程序在开发模式下运行。目前,我已使用开发环境中的设置从环境覆盖了production.rb文件,以获取实际的堆栈跟踪。

我已经将RailsEnv生产设置添加到apache2中的VirtualHost设置中,但似乎没有任何区别。设置ENV也不会改变生产。

2。所有电话的ArgumentError 无论我打算做什么电话,都会产生此错误消息。日志文件告诉我以下内容:

  

开始获取192.168.33.82的GET“/”   2007年4月7日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.0ms)呈现   /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.4ms)内

这对我来说没什么意义。我不知道出了什么问题。我目前只有一个看起来像这样的控制器:

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并包含解决此问题可能需要的其他文件。

修改 的 我已经设法通过重命名控制器上的一个功能来进一步。我将搜索重命名为create,现在我收回了HAML错误。也许我使用了关键字......?

1 个答案:

答案 0 :(得分:0)

woot,终于找到了解决方案......

似乎我使用关键字来定义我的行为,而Rails不喜欢这样。这解决了问题2.

问题1通过将 Rails.env ='development' 添加到environment.rb文件

来解决