如何在使用Ruby和Sinatra编写的Heroku应用程序中使用CGI?

时间:2012-10-25 02:58:59

标签: ruby heroku cgi sinatra

我正在尝试使用CGI将信息从文本表单移动到新的网页。为此,我在表单中将action设置为action="new.html"。然后,在我的.rb文件的相关部分中,我有:

get "/new.html" do
  @graph  = Koala::Facebook::API.new(session[:access_token])
  @app  =  @graph.get_object(ENV["FACEBOOK_APP_ID"])

  if session[:access_token]
    @query=CGI.new()         # Line of interest
    @input=@query["tool_1"]  # Line of interest
  end

  erb :my_tools_F
end

post "/new.html" do
  redirect "/new.html"
end

加载新网页,但@input.erb文件中调用时,.erb为空。在这部分脚本之前,我确实需要CGI。我的Web主机是Heroku,两个views文件都位于名为{{1}}的目录中。该应用程序将在Facebook上推出。

示例代码为here

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试获取表单的参数。我在这里有另一个答案,但这对你不起作用。您可以在没有cgi的情况下轻松完成此操作,您应该考虑使用内置方法来执行此操作。但是,在你做到这一点之前,我注意到你的github帖子中有一些错误。

您的文件夹Views应为views。小但很重要。我无法正确渲染页面。

在第33行的new.erbindex.erb上显示:

<input type="submit" value="Add"">

最后还有一个"。只需将其删除即可:

<input type="submit" value="Add">

最后,要做你需要做的事情:

get "/new.html" do
  erb :new
end

post "/new.html" do
  @input = params[:tool_1]
  erb :new
end
而不是你做了什么。在http://www.sinatrarb.com/intro找到params。