Rails AJAX jQuery POST - param没有传递,数据库没有更新

时间:2014-05-29 01:01:59

标签: jquery ruby-on-rails ajax coffeescript

我是Rails的新手,并且正在尝试使用AJAX更新或发布到我的数据库。我在开发日志中看到以下代码查询数据库,但数据不作为参数传递给控制器​​操作,并且数据库没有更新,尽管我能够访问{{1} },"是"和"成功"通过jQuery提醒下面。

flascard_id

user_flashcards.js.coffee

("div.user_flashcards_form").click -> slide_number = $('.flexslider').data('flexslider').currentSlide + 1 flashcard_id = $("img:eq("+slide_number+")").data("flashcard-id") alert(flashcard_id) if !@checked alert("yes") $.ajax({ url: "/user_flashcards/" + flashcard_id + "/mark", type: "POST", data: { marked: @checked }, success: (data) -> alert ("success") return false error:(data) -> return false }) else alert("no") return

user_flashcards_controller.rb

1 个答案:

答案 0 :(得分:0)

  

我将@checked改为   $('input#mark.flashcard_mark_checkbox.checkbox')。是(:选中)和   代码正在运行。

问题在于您依靠checkbox输入将数据传递给控制器​​

-

Checkboxes don't have a value if they are unchecked (at least to JQuery's Serialize method)

  

因此,您可能会期望查询字符串如:

     

'checkbox1=true&checkbox2=false'

     

你真正得到的是:

     

'checkbox1='

我想象的是,如果未选中该复选框,则会向控制器发送一个空白或不存在的参数。当然,这不会注册任何数据。我会这样做:

def mark
  @flashcard_id = params[:id]
  user_id = current_user.id
  marked = params[:marked] || "0"

  @user_flashcard = UserFlashcards.where(flashcard_id: @flashcard_id, user_id: user_id).first_or_create
  if @user_flashcard
    @user_flashcard.update(marked: marked)
  end
end

这将为marked提供默认值,允许您将其正确保存到数据库