使用link_to通过ajax传递数据到rails控制器?

时间:2013-07-02 06:12:10

标签: jquery ruby-on-rails ruby ajax ruby-on-rails-3

我想在rails项目中使用ajax通过link_to将一个携带数据的对象实例传递给控制器​​。但我的数据似乎没有被带到控制器,我做错了什么? 我的代码示例如下:

<%= 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是一个在传递给视图之前初始化的实例变量。

1 个答案:

答案 0 :(得分: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>