使用Rails远程功能更新记录

时间:2011-12-21 06:25:24

标签: ruby-on-rails

我只是想知道是否有任何方法可以从视图中更新表的记录?例如,我可以使用下面的代码从表中删除记录吗?

<td><%= link_to 'Delete', my_path(user), :confirm => 'Are you sure?', :method =>:delete, :remote=>true %></td>

在我的控制器中,我有:

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

  respond_to do |format|
    format.js do
      render(:update) { |page| page.reload }
    end
  end
end

以上代码完美无缺。它从表中删除记录,并在单击destroy链接后重新加载页面。 现在,我的问题是:我可以更新记录中的值吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

当然可以,你只需改变一些事情:

控制器中的方法是更新:

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

  respond_to do |format|
    format.js do
      render(:update) { |page| page.reload }
    end
  emd
end

然后,您可以将链接更改为以下内容:

<td><%= link_to "Update", my_path(user), :method => :put, :remote => true %></td>

请注意,这是假设你处于form_for @user标签。

<%= form_for @user do |f| %>
  <%= f.text_field :name %>
  # aforementioned link to update goes here
<% end %>

您认为在控制器方法中设置@user(很可能是def edit

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