我编写了一个基本的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错误。也许我使用了关键字......?
答案 0 :(得分:0)
似乎我使用关键字来定义我的行为,而Rails不喜欢这样。这解决了问题2.
问题1通过将 Rails.env ='development' 添加到environment.rb文件
来解决