【发布时间】:2015-12-29 06:03:23
【问题描述】:
我正在使用 Ruby 开发我的 Rails 后端,我想将数据发布到此服务器。但是,如果我使用 PAW 进行 Post-request,我会被重定向。我是 Http Requests 的新手。有人可以解释一下它的功能以及如何使用 http post 请求吗?
我想在我的服务器的数据库 (sqlite3) 上发布信息。
这是如何工作的?请解释 :) 谢谢。 问候约翰
这是代码:
所有者控制器:
#app/controllers/owners_controller.rb
class OwnersController < SessionsController
respond_to :html
before_action :owner_find, only: [:show, :edit, :update, :destroy]
def index
@owners = Owner.all
end
def show
end
def update
@owner = Owner.find(params[:id])
if @owner.update(owner_params)
redirect_to @owner
else
render 'edit'
end
end
def new
@owner = Owner.new
end
def destroy
@owner.destroy
redirect_to owners_path
end
def edit
end
def create
@owner = Owner.new owner_params
if @owner.save!
flash[:notice] = 'You signed up successfully'
flash[:color]= 'valid'
redirect_to owners_path
else
flash[:notice] = 'Form is invalid'
flash[:color]= 'invalid'
render 'new'
end
end
private
def owner_find
@owner = Owner.find(params[:id])
end
def owner_params
params.require(:owner).permit(:name, :password, :password_confirmation, :token)
end
end
会话控制器:
class SessionsController < ApplicationController
before_filter :authenticate_user, :except => [:login, :login_attempt]
def login
#goes to Login Form
end
def logout
session[:owner_id] = nil
redirect_to :action => 'login'
end
def login_attempt
authorized_user = Owner.authenticate_by_name(params[:login_name],params[:login_password])
if authorized_user
session[:owner_id] = authorized_user.id
flash[:notice] = "Wow Welcome again, you logged in as #{authorized_user.name}"
redirect_to welcome_index_path
else
flash[:notice] = 'Invalid Username or Password'
flash[:color]= 'invalid'
render 'login'
end
end
end
控制台日志:
来自网络请求 (http://192.168.2.144:3000/owners?name=hans&password=hans321&password_confirmation=hans321)
在 2015 年 10 月 1 日 12:12:18 +0200 开始 GET "/owners?name=hans&password=[FILTERED]&password_confirmation=[FILTERED]" for 192.168.2.144 无法从 192.168.2.144 渲染控制台!允许的网络:127.0.0.1、::1、127.0.0.0/127.255.255.255 OwnersController#index 作为 HTML 处理 参数:{"name"=>"hans", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"} Owner Load (0.1ms) SELECT "owners".* FROM "owners" WHERE "owners"."id" = ?限制 1 [["id", 2]] Owner Load (0.1ms) SELECT "owners".* FROM "owners" 在布局/应用程序中渲染 owner/index.html.erb (1.8ms) 在 60 毫秒内完成 200 次 OK(查看次数:58.9 毫秒 | ActiveRecord:0.2 毫秒)
显示 200 正常,但数据库中没有任何反应。
来自 Paw-Request(所以我可以使用 post。顺便说一句。我如何在浏览器请求中使用 post?
开始 POST "/owners?name=hans&password=[过滤]&password_confirmation=[过滤]" 对于 192.168.2.144 在 2015-10-01 12:12:45 +0200 无法渲染控制台 来自 192.168.2.144!允许的网络:127.0.0.1, ::1, 127.0.0.0/127.255.255.255 由 OwnersController#create 作为 HTML 参数处理:{"name"=>"hans", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"} 无法验证 CSRF 令牌 真实性重定向到http://192.168.2.144:3000/过滤链 停止为 :authenticate_user 呈现或重定向完成 302 1ms 内找到 (ActiveRecord: 0.0ms)
CRSF 认证好像失败了..
编辑:
起初: 致富派克!这对我帮助很大。谢谢!!非常感谢您的努力。
我接近解决方案.. 我的问题是:我无法在 url 中放置正确的参数。禁用令牌身份验证以进行测试。所以没关系。
参数应该是这样的: 参数:{"utf8"=>"✓", "authenticity_token"=>"q9JvFhoSUgfydFTvh18JHbIIdKNDjnOS9m/trVBu9EHPP04xGsO69zPh1BFZBI1Ev1YcnOTiPmaAiPWOSkm5Xg==", "owner"=>{"name"=>"Hubert", "password"=>"[FILTERED] , "password_confirmation"=>"[FILTERED]"}, "commit"=>"创建所有者"}
而不是按照我的要求: 参数:{"name"=>"Hubert", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "owner"=>{}}
【问题讨论】:
-
下一次,您应该确保将代码放在问题的正文中,而不是图像中:)
-
我认为只截屏会更容易。我会编辑它。 :)
标签: ruby-on-rails http post http-status-code-302