【发布时间】:2014-05-17 03:20:55
【问题描述】:
我将 Best in Place gem 与 rails 4 应用程序一起使用,并从显示给用户的数据库表中获取多条记录。最初,我的数据库没有更新,但有了Undefined method update_attributes? 解决方案,我的数据库现在更新了。
我当前的问题是:当用户编辑特定行时,我希望更新数据库中的该行。现在更新的字段会导致数据库中的所有行都被更新。
这是我希望用户编辑的表格的代码,它呈现在视图中:
<tbody>
<% @userdailydata.each do |data| %>
<tr>
<td> <%= best_in_place data, :date,:display_with => lambda { |v| v.strftime("%Y-%m-%d") } %> </td>
<td> <%= best_in_place data, :calories_consumed %> </td>
<td> <%= best_in_place data, :calories_exercised %> </td>
<td> <%= best_in_place data, :weight %> </td>
</tr>
<% end %>
</tbody>
从控制器更新操作:
def update
@userdailydata = Userdailydata.where(:user_id=>current_user.id)
respond_with @userdailydata
@userdailydata.each do |data|
data.update_attributes(allowed_params)
end
end
这段代码循环遍历暴露给用户的每一行并更新所有行(而不是有问题的一行),所以我知道为什么我当前的代码不正确,但我不确定如何解决这个问题。
谁能帮我弄清楚如何只更新用户正在积极编辑的记录?
【问题讨论】:
-
这是来自控制器
update操作的代码吗?我建议发布整个操作代码。和视图中的代码 -
感谢您的反馈,我编辑了问题并提供了更多代码。
-
我认为您的
update操作代码不正确。你想更新用户的属性(换句话说,用户的数据)。对?你上面贴的视图,是来自users.index.html.erb吗? -
是的,视图来自使用 userdailydata.index.html.erb。我想从用户执行内联编辑的任何日期更新用户的数据。但是会向用户公开包含许多日期的整个数据表。
标签: ruby-on-rails ruby ruby-on-rails-4 best-in-place