2013-07-02 110 views
0

我想通過rails項目中的link_to使用ajax將一個攜帶數據的對象實例傳遞給控制器​​。但是我的數據似乎沒有被傳送給控制器,我做錯了什麼? 我的代碼示例是如下:使用link_to通過ajax傳遞數據到rails控制器?

<%= link_to '', my_path_controller_path(my_object: @object), 
           remote: true, method: :post, class: "my-class" %> 

在控制器我有以下:

def my_path 
    @my_object = MyObject.new(params[:my_object]) 

     if @my_object.valid? 
      @my_object.doSomething() 
      render json: { 
       success: true 
      } 
     else 
      render json: { 
      success: false, 
      message: @my_object.errors.full_messages.to_sentence 
     } 
     end 
end 

@object是之前它被向下傳遞到視圖的一個實例變量初始化。

+0

你可以發表你完全控制行動,並獲取發送到控制器params哈希表? – kwyoung11

+0

我想如果你在控制器中放入params,你可以很容易地找到你的參數。 –

+0

問題是我的ajax成功始終是false,因爲沒有設置my_object上的任何屬性,它們都是空白的。即使在視圖中它們都對對象實例變量有效? –

回答

1

嘗試這樣的事:

<%= link_to 'My Link', javascript::void(0), :class => "my-class" %> 

把一些腳本:

<script> 
$(".my-class").click(function() { 
    $.ajax({ 
     type: "post", 
     url: "<%= my_path_controller_path %>", 
     data: {my_object: <%= @object %>}, 
     dataType:'script', 
      beforeSend: function(){ 
       // do whatever you want 
      }, 
      success: function(response){ 
       // do whatever you want 
      } 
     }); 
}); 
</script> 
相關問題