我需要我的网站上一个按钮,可以将信息发送到控制器(pagetimes)的创建操作。这似乎是工作,但它未发送我的全部指定数据 - 可能不得不与我的无能来组织数据载体。我已经通过提供POST请求在我的config / routes.rb中文件后pagetimes /创建
在application.js中:
函数submitForm(){
警报(检查按钮 - 工作);
$阿贾克斯({
键入:POST,
网址:'/ pagetimes /创建',
数据:{页面名:无论,启动:7,结束:21},
});
}
其中,:页面名
,:启动
和:结束
在我的数据表(字符串,整数,整数)列,并在模型中进行访问,并在手动输入新页面为新页面停留什么显示可用。
在我的网页的看法:
<按钮式=按钮的onclick =submitForm()>发送数据< /按钮>
一切是pretty的标准。我可以在我的职位被成功提交数据库中看到,但3个数据字段我想填充均为空。也许这已经是与我是如何构建的数据:{}
字段?
O / W,在Win7的轨道3,不使用其他任何花哨的可能对这个轴承...
更新1:这是表格源$ C $ C样子,我尝试后进入。也许这就是我所指的领域不正确?
的情况下 < DIV CLASS =表单输入>
< DIV CLASS =控制组串可选pagetime_pagename><标签类=string可选控制标签为=pagetime_pagename>页面名称< /标签>< DIV CLASS =控制>&LT ;输入类=string可选ID =pagetime_pagenameNAME =页面停留[页面名]大小=50型=文本/>< / DIV>< / DIV>
< DIV CLASS =控制组整数可选pagetime_start><标签类=整数可选控制标签为=pagetime_start>启动< /标签>< DIV CLASS =控制>&LT ;输入类=数值整数可选的ID =pagetime_startNAME =页面停留[开始]步=1类型=数字/>< / DIV>< / DIV>
< DIV CLASS =控制组整数可选pagetime_end><标签类=整数可选控制标签为=pagetime_end>结束< /标签>< DIV CLASS =控制>&LT ;输入类=数值整数可选的ID =pagetime_endNAME =页面停留[末]步=1类型=数字/>< / DIV>< / DIV>
< / DIV>
更新2:这里是一块我日志包含POST:
开始邮报/ pagetimes /制造在2014年1月2日12点45分48秒-0500为127.0.0.1
处理由PagetimesController#创建为* / *
参数:{结束=>21,页面名称=>中什么,开始=>7}
[1分[35mUser负载(1.0ms的)0米选择用户。*从用户WHERE用户,ID= 1 LIMIT 1
[1分[36米(0.0ms)[0分[1mbegin交易[0米
[1分[35mSQL(15.0ms)0米INSERT INTOpagetimes(created_at,结束,页面名称,开始,的updated_at,USER_ID)VALUES(?,?,?,?, ??,)[created_at,星期四,2014年1月2日17时45分48秒UTC +00:00],[结束,零],[页面名称,零],[开始,零] [的updated_at,星期四,2014年1月2日17时45分48秒UTC +00:00],[user_ID的,1]
[1分[36米(7.0ms)[0分[1mcommit交易[0米
重定向到http://本地主机:3000 / pagetimes / 22
完成302发现于91ms(ActiveRecord的:24.0ms)
更新3:控制器动作
高清创建
@pagetime = Pagetime.new(PARAMS [:页面停留])
@ pagetime.user = CURRENT_USER
respond_to代码做|格式|
如果@ pagetime.save
的format.html {redirect_to时@pagetime,注意:页面停留已成功创建 }
format.json {渲染JSON:@pagetime,状态:创建,地点:@pagetime}
其他
的format.html {渲染的动作:新}
format.json {渲染JSON:@ pagetime.errors,状态:unprocessable_entity}
结束
结束
结束
解决方案
函数submitForm(){
警报(检查按钮 - 工作);
$阿贾克斯({
键入:POST,
网址:'/ pagetimes /创建',
数据:$ .PARAM({页面停留:{页面名:无论,启动:7,结束:21}})
});
}
I have need for a button on my site which can send information to the create action of a controller ("pagetimes"). It seems to be working, although it is not sending all the data I am specifying--probably having to do with my inability to structure the data vector. I have made POST requests available in my config/routes.rb file via post 'pagetimes/create'
In application.js:
function submitForm() {
alert("checked the button - worked");
$.ajax({
type:'POST',
url: '/pagetimes/create',
data: { pagename: "whatever", start: 7, end: 21 } ,
});
}
Where :pagename
, :start
and :end
are columns in my data table (string, integer, integer) and are made accessible in the model, and are available in what shows in the manual entry "new" page for a new pagetime.
In my page view:
<button type="button" onclick="submitForm()">Send data</button>
Everything else is pretty standard. I can see in my database that the post is being submitted successfully, but the 3 data fields I am trying to populate are all NULL. Probably this has something to do with how I am structuring the data: {}
field?
O/w, Rails 3 on Win7, not using anything else fancy that might have a bearing on this...
UPDATE 1: This is what the form source code looks like that I am trying to post into. Maybe it is the case that I am referring to the fields incorrectly?
<div class="form-inputs">
<div class="control-group string optional pagetime_pagename"><label class="string optional control-label" for="pagetime_pagename">Pagename</label><div class="controls"><input class="string optional" id="pagetime_pagename" name="pagetime[pagename]" size="50" type="text" /></div></div>
<div class="control-group integer optional pagetime_start"><label class="integer optional control-label" for="pagetime_start">Start</label><div class="controls"><input class="numeric integer optional" id="pagetime_start" name="pagetime[start]" step="1" type="number" /></div></div>
<div class="control-group integer optional pagetime_end"><label class="integer optional control-label" for="pagetime_end">End</label><div class="controls"><input class="numeric integer optional" id="pagetime_end" name="pagetime[end]" step="1" type="number" /></div></div>
</div>
UPDATE 2: Here is the piece of my logs that contains the POST:
Started POST "/pagetimes/create" for 127.0.0.1 at 2014-01-02 12:45:48 -0500
Processing by PagetimesController#create as */*
Parameters: {"end"=>"21", "pagename"=>"whatever", "start"=>"7"}
[1m[35mUser Load (1.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
[1m[35mSQL (15.0ms)[0m INSERT INTO "pagetimes" ("created_at", "end", "pagename", "start", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?) [["created_at", Thu, 02 Jan 2014 17:45:48 UTC +00:00], ["end", nil], ["pagename", nil], ["start", nil], ["updated_at", Thu, 02 Jan 2014 17:45:48 UTC +00:00], ["user_id", 1]]
[1m[36m (7.0ms)[0m [1mcommit transaction[0m
Redirected to http://localhost:3000/pagetimes/22
Completed 302 Found in 91ms (ActiveRecord: 24.0ms)
UPDATE 3: Controller action
def create
@pagetime = Pagetime.new(params[:pagetime])
@pagetime.user = current_user
respond_to do |format|
if @pagetime.save
format.html { redirect_to @pagetime, notice: 'Pagetime was successfully created.' }
format.json { render json: @pagetime, status: :created, location: @pagetime }
else
format.html { render action: "new" }
format.json { render json: @pagetime.errors, status: :unprocessable_entity }
end
end
end
解决方案
function submitForm() {
alert("checked the button - worked");
$.ajax({
type:'POST',
url: '/pagetimes/create',
data: $.param({ pagetime: {pagename: "whatever", start: 7, end: 21 }})
});
}