从外部网站发送到Rails应用程序的请求不会被路由

时间:2017-03-16 02:27:20

标签: ruby-on-rails post heroku routes

我正在尝试将数据从外部网站发送到Rails应用程序,但邮件请求未正确路由。

Rails应用程序具有路径



  post '/submit_text/' => 'activities#submitText', as: :submitText




相应控制器操作的代码是



    before_filter :submitText
    protect_from_forgery :except => :submitText
    def submitText    
      puts "in submitText"
      puts params[:text]
      puts "end of submitText "
    end
    




我正在尝试将数据从外部网站发送到Rails应用程序,如此



<form action="https://todo-list-study.herokuapp.com/submit_text/" method= "post">

    
        <textarea name="response[text]" rows="25" cols="75" id="answer_text">
    
        </textarea>
    
        <input type="submit" name="Submit" value="test" onclick="recordAnswer()">    
    
</form>    
&#13;
&#13;
&#13;

当我从外部网站提交数据时,Rails应用程序会收到它,但它不会将其传递给指定的控制器操作。以下是根据Heroku日志文件发生的事情:

&#13;
&#13;
heroku[router]: at=info method=POST path="/submit_text/" host=todo-list-study.herokuapp.com request_id=fee72511-ad1e-41c3-ae4c-d4b3395e6afd fwd="24.7.71.184" dyno=web.1 connect=1ms service=19ms status=500 bytes=1754 protocol=https
&#13;
&#13;
&#13;

不幸的是,这就是发生的一切。鉴于方法开头的put语句没有被执行,我得出的结论是它没有被调用。即使Rails应用程序和外部网站都使用HTTPS协议运行,也会发生这种情况。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

路由器正在为该呼叫找到一个操作,否则它将使用404而不是500进行响应,这表示存在内部错误。

假设您没有尝试将包含内容的响应发送回客户端,请尝试添加对呈现的调用,以便控制器发回响应,而不是尝试查找要呈现的视图模板,是我猜测问题的地方。

例如,尝试将代码更新为:

def submitText    
  puts "in submitText"
  puts params[:text]
  puts "end of submitText "

  render nothing: true
end