【问题标题】:Rails - Is there a way to update a single attribute?Rails - 有没有办法更新单个属性?
【发布时间】:2011-05-22 18:31:36
【问题描述】:

我只是想知道,我有一个模型,除了来自其他模型 (FK) 的 id 之外,它还有一个属性 boolean。我想知道如何创建一个按钮来改变这个boolean 和只是那个

我有问题的模型是这个:

class Squad
 belongs_to :player
 belongs_to :team
end

我想在team#show 页面上创建一个按钮,以便拥有此teamplayer 可以更改squadboolean。我该怎么做?我的控制器看起来如何?

谢谢:)!

-编辑-

我正在使用这样的链接:

<%=link_to("Change status", squad_path(sqd, :status => true), :method => :put, :confirm => "Sure?")%>

sqd 是我查询的一部分。这个链接错了吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 forms controller models


    【解决方案1】:
    <%= link_to("Change status", squad_path(sqd, "squad[status]" => true), :method => :put, :confirm => "Sure?") %>
    

    在您的控制器中(这很常见)

    def update
      @squad = Squad.find params[:id]
      if @squad.update_attributes params[:squad]
        ...
      end
    end
    

    【讨论】:

    • 谢谢!那是缺少的部分:)
    • @Aditya Sanghi,是的,这当然只是一个错误类型,这不是答案的重点
    • 我认为问题的重点是如何更新模型上的单个属性而不是多个。不管很高兴海报得到了解决方案。 :) 干杯
    • @fl00r 的回答帮助我找出了我的错误。我在没有控制器中的方法的情况下做到了。 &lt;% boolval_state = modelname.boolval ? "Y" : "N"; boolval_flip = modelname.boolval ? false : true; %&gt;&lt;%= link_to boolval_state, modelname_path(modelname, "modelname[boolval]" =&gt; boolval_flip), method: :put %&gt;
    【解决方案2】:

    是的,有。该方法称为“update_attribute”。它有两个参数,字段名和值。

      squad.update_attribute(:boolean_field,true) # or false
    

    基于更新的问题

    def update
      @squad = Squad.find(params[:id])
      if @squad.update_attribute(:status,params[:status])
        ...
      end
    end
    

    【讨论】:

    • 感谢您的回答:)。我正在尝试创建指向它的链接但不起作用,它正在更新页面中的所有模型:/我有一个查询要找到有问题的小队,你认为这是最好的方法还是有其他可能的我能做什么?
    【解决方案3】:

    你的属性名称是什么?

    由于它属于player,您可以使用player.squad.name_of_your_attributes = new_value 访问它。如果您希望将更改保存在数据库中,请不要忘记 save 您的对象。

    另外,你可以阅读that

    编辑:fl00r 回答了你编辑的问题,我不需要重复他写的内容。

    【讨论】:

    • 感谢您的回答。我编辑了我的问题。你能把我的链接改成你建议的吗? :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多