【问题标题】:How update an attribute binded on a check box when clicking on it?单击复选框时如何更新绑定在复选框上的属性?
【发布时间】:2011-05-21 20:12:27
【问题描述】:

首先,提前感谢您的关注:我是 Rails 的菜鸟,我面临的问题似乎并不困难,但我在实现它时遇到了一些麻烦。

这是我的问题:我正在使用以下部分显示“建议”列表:

<table class="recommendations" summary="User recommendations">
    <%= render @recommendations%>
</table>

它为每个显示的“推荐”调用下一个部分:

<tr>
    <td class="recommendations">
 <span class="content">
            <%= wrap(recommendation.content)%>
        </span>
 <span class="timestamp">
            Posted <%=time_ago_in_words(recommendation.created_at)%> ago.
 </span>
    </td>
    <td>
 <%= form_for current_user.recommendations.find(:id => recommendation.id) do |f| %>
     <label>Display</label><%= f.check_box :displayed, :onclick => "update"%>
 <% end %>
    </td>
</tr>

所以,我想在复选框中绑定recommension.displayed属性,并在复选框被选中时自动更新推荐资源。

目前,我无法访问适当的“推荐”实例以传递给 form_for,因为我有以下错误:

Unknown key(s): id

然后我不确定

:onclick => "update"

将执行我想做的事情:调用其余的“PUT”方法来更新数据库中的资源。

你能帮帮我吗?

【问题讨论】:

    标签: ruby-on-rails ajax ruby-on-rails-3 checkbox


    【解决方案1】:

    好的,现在我完成了。

    Rails 可以管理复选框上的选中操作,但不能管理未选中的操作。这解释了之前的行为。

    我更改了执行此操作的方式,并将 link_to 与 image_tag 一起使用。这是代码:

    <td>
        <label>Display</label>  
    <% if (recommendation.displayed?) %>
    <%= link_to image_tag("checked.png", :border=>0), :action => :hide, :id => recommendation %>
    <% else %>
    <%= link_to image_tag("unchecked.png", :border=>0), :action => :display, :id => recommendation %>
    <%end%>
    </td>
    

    在控制器中:

    def display
      @recommendation.displayed = true
      unless @recommendation.save
        flash[:error] = "Error displaying the recommendation."
      end
      redirect_back_or current_user 
    end
    
    def hide
      @recommendation.displayed = false
      unless @recommendation.save
        flash[:error] = "Error hiding the recommendation."
      end
      redirect_back_or current_user 
    end
    

    以及具体路线:

    get 'recommendations/display/:id', :to => "recommendations#display"
    get 'recommendations/hide/:id', :to => "recommendations#hide"
    

    现在可以正常使用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2014-06-16
      • 2011-01-27
      • 1970-01-01
      • 2016-08-30
      • 2016-11-14
      相关资源
      最近更新 更多