【问题标题】:Calling Rails action from Javascript从 Javascript 调用 Rails 操作
【发布时间】:2013-03-31 10:06:55
【问题描述】:

我有这个link_to 在我的控制器中调用update 操作:

<%= link_to((image_tag("lock_closed.svg", :class => "edit")), :controller => "sections", :action => "update",:id => section.id, :remote => true) %>


但我真的很想通过一些带有普通图像标签的 javascript 调用 update 操作。

比如:

<%= image_tag("lock_closed.svg", :class => "edit")%>

和:

$(".edit").click(function(){
    if ($(this).hasClass("update")){
    // call update action
    } else {
    //do something else 
    };
})

可以这样调用动作吗?我一直在使用 GETPOSTAjax 方法,但我不确定如何利用它们来定位特定的控制器和操作。

【问题讨论】:

    标签: javascript ruby-on-rails ajax


    【解决方案1】:

    发送一个 Ajax 调用

    $(".edit").click(function(){  
      if ($(this).hasClass("update")){     
        $.ajax({
          type: "PUT",
          url: "/sections/<%= section.id %>"
        });
      } else {
        //do something else 
      }; 
    })
    

    【讨论】:

      【解决方案2】:

      为了解决ActionController::InvalidAuthenticityToken的问题 在 ajax 调用中,我们还应该发送 authenticity_token

       $.ajax({
         url: '/sections',
         data: { authenticity_token: $('[name="csrf-token"]')[0].content, 
                 id: <%= section.id %> },
         method: 'POST',
         success: function (res) {
           ....
        }
      }); 
      

      【讨论】:

        猜你喜欢
        • 2015-01-12
        • 1970-01-01
        • 2012-05-24
        • 2014-11-03
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多