0

我有一个表单,我想show_msg在用户按下提交按钮时更新参数(它是一个布尔参数)。如果用户选中该框并按提交,我想将其设置为 TRUE。否则:假。

所以我有一个有弹出窗口的主html。在这个弹出窗口中,我写了我的表格。(我应该在“行动”中写什么?我只需要关闭这个弹出窗口):

<form name="input" action="#" method="post">
   <input type="checkbox" id="mycheckbox">Don't show me again<br>
   <input type="submit" id="Submit">
</form> 

这是我的 javascript:

$("#submit").click(function() {
   $.ajax({
     ## the url is the controller
     url: '/welcome',
     type: 'PUT',
     data: {show_msg: $("#mycheckbox").is(":checked")}
   });
});

这是我的控制器:

class WelcomeController < ApplicationController

def update
    @user = User.find(params[:id])

    respond_to do |format|
        if @user.update_attributes(params[:show_msg])
            format.html { redirect_to @user, notice: 'You will never see this message again.' }
            format.json { head :no_content }
        end
    end
end

任何帮助表示赞赏!

4

2 回答 2

2

form_for使用 Rails标记构建表单。

然后不是在提交按钮单击时触发事件,而是在表单提交时触发。

最后,在 you$.ajax call中,对于url属性,从表单操作属性中检索好的 URL。

有关信息,您可以使用表单标签添加一个remote: true选项。ajax:success然后在等上绑定一个事件ajax:error

于 2013-02-05T09:22:22.520 回答
1

将操作设置为服务器端进程的 URL,如果 JavaScript 失败,该进程将处理提交的数据。

另请参阅渐进式增强不显眼的 JavaScript

于 2013-02-05T09:22:06.360 回答