2012-10-25 35 views
1

我正在尝试将信息从文本表单移动到使用CGI的新网页。为此,我在表格中将action设置为action="new.html"。然后,在我的.rb文件的相关部分,我有:如何在使用Ruby和Sinatra编写的Heroku应用程序中使用CGI?

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 
    @[email protected]["tool_1"] # Line of interest 
    end 

    erb :my_tools_F 
end 

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

新的Web页面加载,但@input是空白的,当我把它在.erb文件。在这部分脚本之前,我确实需要CGI。我的网络主机是Heroku,并且.erb文件都位于名为views的目录中。该应用程序构建在Facebook上推出。

示例代码是here

+0

我更新了我的答案。看看它是否可以帮助你。 – sunnyrjuneja

回答

1

看来你正在试图获取表单的参数。我在这里有另一个答案,但这不适合你。你可以很容易地做到这一点,而不需要CGI,你应该考虑使用内置的方法来做到这一点。但是,在你做到这一点之前,我注意到你的github帖子中有一些错误。

您的文件夹Views应为views。小但重要。我无法正确呈现网页。

在您new.erbindex.erb第33行记载:

<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。

+0

谢谢你的尝试,但是当我使用这个时,“@input”仍然是空的。 – Ryan

+0

我很乐意帮助您调试。你能否编写一个简化版本的代码来复制没有facebook身份验证的错误?张贴在gist,github或其他上。 – sunnyrjuneja

+1

我会,但是如果我没有遇到任何障碍,新版本将在明天晚些时候才会启动。 – Ryan

相关问题