我做了一个AJAX调用,将一个javascript变量发送到我的控制器中的一个方法。我的控制器看起来像这样:
def registration
@fund = params[:funds]
@index = params[:indexDecision]
render json: 'ok'
end
def create
@user = User.new(ticket_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
Record.create(fund: @funds, weight: @weight)
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
format.js
end
end

这是我的AJAX电话:
$.ajax({
url: "/record",
type: "POST",
data: {
funds: funds,
indexDecision: indexDecision
},
complete: function(){
console.log('Congrats');
}
});

这是我的配置路由文件:
resources :users
post '/record' => 'users#registration'

我的AJAX通话效果很好。但是现在我需要在create方法中使用实例变量@fund
和@index
。我读到我必须使用私有方法,以便私有方法中的实例变量可用于其他方法。
我试过,但我有error 400 bad request
。
我怎样才能在create方法中提供@funds和@index变量?
答案 0 :(得分:0)
您的代码可能看起来像这样(为简单起见,我忽略了HTML格式):
def registration
user = User.new(ticket_params)
if user.save
fund = params[:funds]
index = params[:indexDecision]
Record.create(fund: funds, weight: weight)
render json: 'ok'
else
# report error here
end
end