当前位置: 首页 > 面试题库 >

Ruby Rails-为AJAX调用控制器动作构造数据

微生毅
2023-03-14
问题内容

我的网站上需要一个按钮,可以将信息发送到控制器的create动作(“ pagetimes”)。尽管它没有发送我指定的所有数据,但似乎仍在工作-
可能与我无法构造数据向量有关。我已经通过以下方式在config / routes.rb文件中提供了POST请求:post 'pagetimes/create'

在application.js中:

function submitForm() {
  alert("checked the button - worked");
  $.ajax({
    type:'POST', 
    url: '/pagetimes/create', 
    data: { pagename: "whatever", start: 7, end: 21 } ,
  });
}

其中:pagename:start:end是我的数据表中的列(字符串,整数,整数),并且可以在模型中访问,并且可以在手动输入“新”页面中显示的页面时间获得。

在我的页面视图中:

<button type="button" onclick="submitForm()">Send data</button>

其他一切都是很标准的。我可以在数据库中看到该帖子已成功提交,但是我尝试填充的3个数据字段均为NULL。可能这与我如何构建该data: {}领域有关?

O / w,Win7上的Rails 3,没有使用其他可能与此有关的花哨内容…

更新1:这就是我尝试发布的表单源代码。也许是我不正确地引用字段的情况?

<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>

更新2:这是我的日志,其中包含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)

更新3:控制器动作

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 }})
      });
 }


 类似资料:
  • 我有 在哪里 一个有0到多个,一个可以有0到多个 此外,我正在以以下方式构建路线 -所有现有用户 -所有现有区域 -所有现有公司 -特定区域中的所有现有公司 -来自特定用户的所有现有公司 公司所在的所有现有区域 -存在于特定区域的公司的所有现有用户 对于1。,2。和3。我在创造遵循下一个模式的控制器 with方法index()、create()、store()、show()、edit()、upda

  • 问题内容: 我有一个不错的页面,可以满足我的所有需求。但是,其中一个元素(部分页面)花费的时间比我要加载的时间长几秒钟。因此,我想做的是先显示该页面,而不显示部分内容,而在其位置显示“正在加载” gif。然后在我的jQuery中… 我想调用我的控制器操作,该操作返回PartialView并更新div内容。它基本上在加载时异步调用部分加载。我可以使用ActionLink做到这一点,直到达到我希望在加

  • 问题内容: 我正在将数据从javascript应用程序发送到MVC5控制器,但是,当数据提交到Submit controller操作时,它永远不会被调用。我有一些非常简单的映射器,它们创建以下JSON对象: 然后,我使用以下代码发送数据: 我的控制器代码如下: 我有以下问题: 但是,从不会调用Submit,但是,如果我注释掉了控制器参数,那么它将被调用,这是为什么呢? 从上面看来,控制器框架似乎无

  • 我有这段代码,我看不出问题的根源在哪里,我在chrome控制台我的控制器中没有发现任何错误: 和在div-loadedthings中正确加载; 控制台中的newMsgs按照它应该的方式进行解析; 我让它为其他页面工作,但似乎我错过了这一页上的一些东西。我有

  • 我对访问javafx控制器类有一些疑问。我已经看到,我们一直使用类的方法来访问控制器类。为什么我们不使用构造函数调用,使用运算符并访问它。即像

  • 问题内容: 我看了以前发布的jQuery / MVC问题,但没有找到可行的答案。 我有以下JavaScript代码: 调用网址时,帖子看起来像: 有人可以向我解释为什么它会这样返回它(背后的逻辑)并为我提供有效的解决方案。提前致谢! PS:其他信息:%22是<<“ >>字符的URL编码参考 问题答案: 为了使其正常工作,必须将Javascript置于Razor视图中,以便该行 由Razor解析并替