【问题标题】:Rails - I need a checkbox to change a field in the DBRails - 我需要一个复选框来更改数据库中的字段
【发布时间】:2011-12-14 00:07:53
【问题描述】:

我知道我以前做过这个,但我一辈子都想不通。

我有一个表,其中有一个“被调用”字段。我需要使用复选框来更新数据库并检查“调用”是否为“真”。不需要是AJAX,只需要更新字段即可。

表:回复 字段:调用

非常感谢。

【问题讨论】:

    标签: ruby-on-rails database checkbox


    【解决方案1】:

    没有 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
    

    参考:

    check box

    【讨论】:

      【解决方案2】:

      在视图中:

      <% 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])
      

      【讨论】:

      • 谢谢。我希望通过单击复选框来更新字段,而不是提交表单。还有其他想法吗?干杯!
      【解决方案3】:

      如果您只想通过单击复选框来执行此操作,则需要走 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”操作。

      【讨论】:

      • 我不会指定频率,因为这意味着它将使用轮询。而是省略该选项或指定 0,代码将改为使用事件观察器。
      猜你喜欢
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      相关资源
      最近更新 更多