【发布时间】:2011-12-14 00:07:53
【问题描述】:
我知道我以前做过这个,但我一辈子都想不通。
我有一个表,其中有一个“被调用”字段。我需要使用复选框来更新数据库并检查“调用”是否为“真”。不需要是AJAX,只需要更新字段即可。
表:回复 字段:调用
非常感谢。
【问题讨论】:
标签: ruby-on-rails database checkbox
我知道我以前做过这个,但我一辈子都想不通。
我有一个表,其中有一个“被调用”字段。我需要使用复选框来更新数据库并检查“调用”是否为“真”。不需要是AJAX,只需要更新字段即可。
表:回复 字段:调用
非常感谢。
【问题讨论】:
标签: ruby-on-rails database checkbox
没有 ajax 的简单方法是在表单中使用复选框并使用复选框 javascript onclick 事件提交表单。
例子:
查看:
<% form_for @rsvp, :id => "rsvp" do |f| %>
<%= f.check_box :called, :onclick => "$('#rsvp').submit()" %>
<% end %>
如果您使用的是 JQuery... 与原型,则 onclick 字符串将为:
$('rsvp').submit()
控制器:
@rsvp = Rsvp.find(params[:id])
if @rsvp.update_attributes(params[:rsvp])
# success
else
# fail
end
参考:
【讨论】:
在视图中:
<% form_for :rsvp, :url => {:controller => "rsvp", :action => "update"} do |f| %>
<%= f.check_box :called %>
<%= f.submit "Update" %>
<% end %>
在rsvp控制器中,更新方法:
@RSVPobject.updateAttribute(:called, params[:rsvp][:called])
【讨论】:
如果您只想通过单击复选框来执行此操作,则需要走 Ajax 之路。 尝试在您的视图中使用“observe_field”。
<%= observe_field ":called",
:frequency => 0.25,
:update => 'feedback_to_user',
:url => {:action => :mark_as_called},
:with => 'called',
:on => 'click' %>
所有细节here。
不要忘记调整路线,以便找到“mark_as_call”操作。
【讨论】: