2

我有一张列出所有用户的表格。我不想打开每个用户然后进行编辑,而是想编辑该表中的某些字段。

- @users.each do |u|
  %tr
    %td= u.name
    %td= best_in_place u, :email_flag, :type => :checkbox

问题似乎是唯一传回的参数是复选框字段:

Processing by UsersController#update as
  Parameters: {"user"=>{"email_flag"=>"true"}

我是以错误的方式接近这个吗?为什么用户对象'u'没有被传回?

4

1 回答 1

0

best_in_place在这里正常工作。不需要每次都传输您正在编辑的整个属性集。这就是 HTTP PUT(或PATCH取决于您的 Rails 版本)的用途——更新模型现有实例的属性。就像在 SQL 中一样,当你运行时UPDATE users SET email='something@example.com' WHERE id=1,你不必每次都列出每个字段。仅触摸指定的列。

当您为last_namecountry如您在评论中所说的那样添加另一个字段时,它将以相同的方式工作。

于 2015-12-13T01:00:53.867 回答