Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 检索Rails4中的传入参数_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 检索Rails4中的传入参数

Ruby on rails 检索Rails4中的传入参数,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我正在用show controller方法将一些参数发布到Rails4应用程序中的远程URL,from/orders/:id route 从我的应用程序发送到服务的参数,服务将返回一组参数到我的应用程序的/fail或/success页面,具体取决于响应是否成功。我可以从日志中看到传入的参数 我想在我的Order controller中使用此参数创建OrderTransaction,我如何才能做到这一点 orders_controller.rb def success ### I w

我正在用show controller方法将一些参数发布到Rails4应用程序中的远程URL,from/orders/:id route

从我的应用程序发送到服务的参数,服务将返回一组参数到我的应用程序的/fail或/success页面,具体取决于响应是否成功。我可以从日志中看到传入的参数

我想在我的Order controller中使用此参数创建OrderTransaction,我如何才能做到这一点

orders_controller.rb

  def success
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  def fail
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end
日志中的传入参数=>

Started POST "/orders/fail" for 127.0.0.1 at 2014-06-01 13:40:28 +0300
Processing by OrdersController#fail as HTML
Parameters: 
  {
    "TRANID"=>"", 
    "type"=>"Auth", 
    "refreshtime"=>"5", 
    "lang"=>"tr", 
    "amount"=>"30", 
    "ACQBIN"=>"490740", 
    "clientIp"=>"193.140.28.145", 
    "name"=>"AKBANK", 
    "cardHolderName"=>"dsadas dasdsa", 
    "okUrl"=>"http://localhost:3000/orders/success",
    "failUrl"=>"http://localhost:3000/orders/fail",
    "storetype"=>"3d_pay_hosting",
    "Response"=>"Declined"
    ....
  }
class Order < ActiveRecord::Base
  belongs_to :user
  belongs_to :participation
  has_one :transaction, :class_name => "OrderTransaction"
end
class OrderTransaction < ActiveRecord::Base
  belongs_to :order
end
post 'orders/success' => 'orders#success'
post 'orders/fail' => 'orders#fail'
resources :orders, only: [:index, :new, :create, :show]
require 'digest/sha1'

class OrdersController < ApplicationController
  before_filter :authenticate_user!
  before_action :set_order, only: [:show, :edit, :update, :destroy]
  skip_before_action :verify_authenticity_token

  def index
    @orders = Order.all
  end

  def show
    @hashing = {
      clientid: POS['clientid'],
      oid: Time.now.to_i.to_s,
      amount: @order.participation.examination.exam_fees.first.fee.to_s,
      okUrl: POS['okUrl'],
      failUrl: POS['failUrl'],
      islemtipi:POS['islemtipi'],
      taksit: '',
      rnd: Time.now.to_i.to_s,
    }
  end

  # GET /orders/new
  def new
    @order = Order.new
  end

  def create
    @order = Order.new(order_params)
    @order.user_id = current_user.id
    respond_to do |format|
      if @order.save
        ...
      else
        ...
      end
    end
  end

  def success
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  def fail
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  private

  def set_order
    @order = Order.find(params[:id])
  end

  def order_params
    params.require(:order).permit(:id, :user_id, :participation_id, :amount, :cardHolderName)
  end
end
<%= simple_form_for(@order, html:{class: "well"}, :url => "https://testsanalpos.est.com.tr/servlet/est3Dgate", :method => :post) do |f| %>
  <% @hashing.each do |k, v| %>
    <%= f.input k, input_html: {name: k, value: v}, as: :hidden %>
  <% end %>
  <%= f.button :submit, "Approve" %>
<% end %>
order.rb=>

Started POST "/orders/fail" for 127.0.0.1 at 2014-06-01 13:40:28 +0300
Processing by OrdersController#fail as HTML
Parameters: 
  {
    "TRANID"=>"", 
    "type"=>"Auth", 
    "refreshtime"=>"5", 
    "lang"=>"tr", 
    "amount"=>"30", 
    "ACQBIN"=>"490740", 
    "clientIp"=>"193.140.28.145", 
    "name"=>"AKBANK", 
    "cardHolderName"=>"dsadas dasdsa", 
    "okUrl"=>"http://localhost:3000/orders/success",
    "failUrl"=>"http://localhost:3000/orders/fail",
    "storetype"=>"3d_pay_hosting",
    "Response"=>"Declined"
    ....
  }
class Order < ActiveRecord::Base
  belongs_to :user
  belongs_to :participation
  has_one :transaction, :class_name => "OrderTransaction"
end
class OrderTransaction < ActiveRecord::Base
  belongs_to :order
end
post 'orders/success' => 'orders#success'
post 'orders/fail' => 'orders#fail'
resources :orders, only: [:index, :new, :create, :show]
require 'digest/sha1'

class OrdersController < ApplicationController
  before_filter :authenticate_user!
  before_action :set_order, only: [:show, :edit, :update, :destroy]
  skip_before_action :verify_authenticity_token

  def index
    @orders = Order.all
  end

  def show
    @hashing = {
      clientid: POS['clientid'],
      oid: Time.now.to_i.to_s,
      amount: @order.participation.examination.exam_fees.first.fee.to_s,
      okUrl: POS['okUrl'],
      failUrl: POS['failUrl'],
      islemtipi:POS['islemtipi'],
      taksit: '',
      rnd: Time.now.to_i.to_s,
    }
  end

  # GET /orders/new
  def new
    @order = Order.new
  end

  def create
    @order = Order.new(order_params)
    @order.user_id = current_user.id
    respond_to do |format|
      if @order.save
        ...
      else
        ...
      end
    end
  end

  def success
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  def fail
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  private

  def set_order
    @order = Order.find(params[:id])
  end

  def order_params
    params.require(:order).permit(:id, :user_id, :participation_id, :amount, :cardHolderName)
  end
end
<%= simple_form_for(@order, html:{class: "well"}, :url => "https://testsanalpos.est.com.tr/servlet/est3Dgate", :method => :post) do |f| %>
  <% @hashing.each do |k, v| %>
    <%= f.input k, input_html: {name: k, value: v}, as: :hidden %>
  <% end %>
  <%= f.button :submit, "Approve" %>
<% end %>
订单\u controller.rb=>

Started POST "/orders/fail" for 127.0.0.1 at 2014-06-01 13:40:28 +0300
Processing by OrdersController#fail as HTML
Parameters: 
  {
    "TRANID"=>"", 
    "type"=>"Auth", 
    "refreshtime"=>"5", 
    "lang"=>"tr", 
    "amount"=>"30", 
    "ACQBIN"=>"490740", 
    "clientIp"=>"193.140.28.145", 
    "name"=>"AKBANK", 
    "cardHolderName"=>"dsadas dasdsa", 
    "okUrl"=>"http://localhost:3000/orders/success",
    "failUrl"=>"http://localhost:3000/orders/fail",
    "storetype"=>"3d_pay_hosting",
    "Response"=>"Declined"
    ....
  }
class Order < ActiveRecord::Base
  belongs_to :user
  belongs_to :participation
  has_one :transaction, :class_name => "OrderTransaction"
end
class OrderTransaction < ActiveRecord::Base
  belongs_to :order
end
post 'orders/success' => 'orders#success'
post 'orders/fail' => 'orders#fail'
resources :orders, only: [:index, :new, :create, :show]
require 'digest/sha1'

class OrdersController < ApplicationController
  before_filter :authenticate_user!
  before_action :set_order, only: [:show, :edit, :update, :destroy]
  skip_before_action :verify_authenticity_token

  def index
    @orders = Order.all
  end

  def show
    @hashing = {
      clientid: POS['clientid'],
      oid: Time.now.to_i.to_s,
      amount: @order.participation.examination.exam_fees.first.fee.to_s,
      okUrl: POS['okUrl'],
      failUrl: POS['failUrl'],
      islemtipi:POS['islemtipi'],
      taksit: '',
      rnd: Time.now.to_i.to_s,
    }
  end

  # GET /orders/new
  def new
    @order = Order.new
  end

  def create
    @order = Order.new(order_params)
    @order.user_id = current_user.id
    respond_to do |format|
      if @order.save
        ...
      else
        ...
      end
    end
  end

  def success
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  def fail
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  private

  def set_order
    @order = Order.find(params[:id])
  end

  def order_params
    params.require(:order).permit(:id, :user_id, :participation_id, :amount, :cardHolderName)
  end
end
<%= simple_form_for(@order, html:{class: "well"}, :url => "https://testsanalpos.est.com.tr/servlet/est3Dgate", :method => :post) do |f| %>
  <% @hashing.each do |k, v| %>
    <%= f.input k, input_html: {name: k, value: v}, as: :hidden %>
  <% end %>
  <%= f.button :submit, "Approve" %>
<% end %>
需要“摘要/sha1”
类OrdersController<应用程序控制器
过滤前:验证用户身份!
在\u操作之前:设置\u顺序,仅:[:显示,:编辑,:更新,:销毁]
在\u操作之前跳过\u:验证\u真实性\u令牌
def索引
@订单=Order.all
结束
def秀
@散列={
clientid:POS['clientid'],
oid:Time.now.to_i.to_s,
金额:@order.participation.examition.examice\u fees.first.fee.to\s,
okUrl:POS['okUrl'],
failUrl:POS['failUrl'],
islemtipi:POS['islemtipi'],
taksit:“,
时间到了,现在到了,
}
结束
#获取/订单/新
def新
@order=order.new
结束
def创建
@订单=订单。新建(订单参数)
@order.user\u id=当前用户id
回应待办事项|格式|
如果@order.save
...
其他的
...
结束
结束
结束
def成功
###我想在这里创建一个带有传入参数的OrderTransaction!
@事务=OrderTransaction.new(????????)
结束
def故障
###我想在这里创建一个带有传入参数的OrderTransaction!
@事务=OrderTransaction.new(????????)
结束
私有的
def设置顺序
@order=order.find(参数[:id])
结束
def order_参数
参数require(:order).permit(:id,:user\u id,:participation\u id,:amount,:cardinner name)
结束
结束
订单/show.html.erb=>

Started POST "/orders/fail" for 127.0.0.1 at 2014-06-01 13:40:28 +0300
Processing by OrdersController#fail as HTML
Parameters: 
  {
    "TRANID"=>"", 
    "type"=>"Auth", 
    "refreshtime"=>"5", 
    "lang"=>"tr", 
    "amount"=>"30", 
    "ACQBIN"=>"490740", 
    "clientIp"=>"193.140.28.145", 
    "name"=>"AKBANK", 
    "cardHolderName"=>"dsadas dasdsa", 
    "okUrl"=>"http://localhost:3000/orders/success",
    "failUrl"=>"http://localhost:3000/orders/fail",
    "storetype"=>"3d_pay_hosting",
    "Response"=>"Declined"
    ....
  }
class Order < ActiveRecord::Base
  belongs_to :user
  belongs_to :participation
  has_one :transaction, :class_name => "OrderTransaction"
end
class OrderTransaction < ActiveRecord::Base
  belongs_to :order
end
post 'orders/success' => 'orders#success'
post 'orders/fail' => 'orders#fail'
resources :orders, only: [:index, :new, :create, :show]
require 'digest/sha1'

class OrdersController < ApplicationController
  before_filter :authenticate_user!
  before_action :set_order, only: [:show, :edit, :update, :destroy]
  skip_before_action :verify_authenticity_token

  def index
    @orders = Order.all
  end

  def show
    @hashing = {
      clientid: POS['clientid'],
      oid: Time.now.to_i.to_s,
      amount: @order.participation.examination.exam_fees.first.fee.to_s,
      okUrl: POS['okUrl'],
      failUrl: POS['failUrl'],
      islemtipi:POS['islemtipi'],
      taksit: '',
      rnd: Time.now.to_i.to_s,
    }
  end

  # GET /orders/new
  def new
    @order = Order.new
  end

  def create
    @order = Order.new(order_params)
    @order.user_id = current_user.id
    respond_to do |format|
      if @order.save
        ...
      else
        ...
      end
    end
  end

  def success
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  def fail
    ### I would like to create an OrderTransaction here with the incoming parameters!
    @transaction = OrderTransaction.new(????????)
  end

  private

  def set_order
    @order = Order.find(params[:id])
  end

  def order_params
    params.require(:order).permit(:id, :user_id, :participation_id, :amount, :cardHolderName)
  end
end
<%= simple_form_for(@order, html:{class: "well"}, :url => "https://testsanalpos.est.com.tr/servlet/est3Dgate", :method => :post) do |f| %>
  <% @hashing.each do |k, v| %>
    <%= f.input k, input_html: {name: k, value: v}, as: :hidden %>
  <% end %>
  <%= f.button :submit, "Approve" %>
<% end %>
”https://testsanalpos.est.com.tr/servlet/est3Dgate“,:method=>:post)do | f |%>
您可以这样做:

#app/controllers/orders_controller.rb
def success
   Orders.new(order_params)
end

private

def order_params
    params.permit(:client_ip, :etc, :etc)
end
--


这将使用Rails中的常规模式,该模式将只列出您需要的参数。考虑到您的
params散列
中填充了来自远程服务的数据,这应该可以正常工作

您将能够像在任何其他rails请求中一样从params散列中获取数据<代码>订单交易。新建(金额:参数[:金额])e.t.c。