我正在尝试将数据从外部网站发送到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;
当我从外部网站提交数据时,Rails应用程序会收到它,但它不会将其传递给指定的控制器操作。以下是根据Heroku日志文件发生的事情:
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;
不幸的是,这就是发生的一切。鉴于方法开头的put语句没有被执行,我得出的结论是它没有被调用。即使Rails应用程序和外部网站都使用HTTPS协议运行,也会发生这种情况。
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
路由器正在为该呼叫找到一个操作,否则它将使用404
而不是500
进行响应,这表示存在内部错误。
假设您没有尝试将包含内容的响应发送回客户端,请尝试添加对呈现的调用,以便控制器发回响应,而不是尝试查找要呈现的视图模板,是我猜测问题的地方。
例如,尝试将代码更新为:
def submitText
puts "in submitText"
puts params[:text]
puts "end of submitText "
render nothing: true
end