开发者

ArgumentError on application requests

I've written a basic Rails 3 application that shows a form and an upload form on specific URLs. It was all working fine yesterday, but now I'm running into several problems that require fixing. I'll try to describe each problem as best as I can. The reason i'm combining them, is because I feel they're all related and preventing me from finishing my task.

1. Cannot run the application in development mode For some unknown reason, I cannot get the application to run in development mode. Currently i've overwritten the production.rb file from the environment with the settings from the development environment to get actuall stacktraces.

I've added the RailsEnv production setting to my VirtualHost setting in apache2, but it seems to make no difference. Nor does settings ENV variable to production.

2. ArgumentError on all calls Whatever call I seem to make, results in this error message. The logfile tells me the following:

Started GET "/" for 192.168.33.82 at Thu Apr 07 00:54:48 -0700 2011

ArgumentError (wrong number of arguments (1 for 0)):

Rendered /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms) Rendered /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (4.1ms) Rendered /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (8.4ms)

This means nothing to me really. I have no clue what's going wrong. I currently have only one controller which looks like this:

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 <&开发者_开发知识库lt; {: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

The routing of my application has the following setup: Again this is all pretty basic and probably can be done better.

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

If anyone can spot what's wrong and why this application is failing, please let me know. If needed I can edit this awnser and include additional files that might be required to solve this problem.

EDIT i've managed to get further by renaming one of the functions on the controller. I renamed search into create and now I'm getting back HAML errors. Perhaps I used a keyword...?


woot, finally found the solutions....

Seems I used keywords to define my actions, and Rails didn't like this. This solved issue 2.

Issue 1 got solved by adding Rails.env= 'development' to the environment.rb file

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜