使用Ajax和Rails链接

时间:2012-09-14 10:41:55

标签: ruby-on-rails ajax

我使用link_to标签来更改有效性:

  <%= link_to "Mark as " + (doc.is_valid ? "invalid" : "valid"), 
                  :action =>'change_validity',:id => doc.id %>

这里,is_valid是具有布尔值的表中的字段。当它是真的链接将显示 作为“标记为无效”。当我点击链接时,它将调用方法“change_validity”方法 在控制器中。该方法将切换is_valid字段并在视图中显示“标记为有效”。

我想用AJAX做这个。我尝试使用link_to_remote。但我无法得到它。 任何人都可以解释如何做到这一点???

2 个答案:

答案 0 :(得分:1)

制作一个部分页面。 _preview.html.erb并将以下代码放入部分视图

<%= link_to_remote "Mark as " + (doc.is_valid ? "invalid" : "valid"), :update => "update", :url => { :action => "change_validity", :id => doc.id } %>

在主视图file.put下面的代码

<div id="update">
    <%= render :partial => "preview", :locals => { :doc => @doc} %>
</div>

在您的控制器中应该有以下代码

def change_validity
// do stuff here
render :partial => "preview", :locals => { :doc => @doc}, :content_type => 'text/html'
end

答案 1 :(得分:0)

link_to_remote在Rails 3中不可用。添加:remote =&gt;是到您的链接。

link_to "Mark as " + (doc.is_valid ? "invalid" : "valid"), 
              change_validity_path(:id => doc.id), :remote => true

编辑:for rails&lt; 3尝试

link_to_remote(
        "Mark as " + (doc.is_valid ? "invalid" : "valid"),
        :url => {:action => "change_validity", :id => doc.id},
        :update => "your_div_id",
        :html => {:class => "something"}
      )