Rails - 有没有办法更新单个属性?

发布于 2024-11-09 08:53:07 字数 575 浏览 0 评论 0原文

我只是想知道,我有一个模型,除了其他模型 (FK) 的 id 之外,它还有一个属性 boolean。我想知道如何创建一个按钮来更改此布尔值,而

我的模型就是这个:

class Squad
 belongs_to :player
 belongs_to :team
end

我想在 team#show 上创建一个按钮页面,以便拥有此团队玩家可以更改小队布尔值。我该如何做到这一点以及我的控制器是什么样子?

谢谢 :)!

-编辑-

我正在使用这样的链接:

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

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

I was just wondering, I have a model that, besides the id's from other models (FK), it has a single attribute boolean. I want to know how can I create a button that changes this boolean and just that

My model in question is this one:

class Squad
 belongs_to :player
 belongs_to :team
end

I want to create a button on the team#show page so the player that owns this team can change the boolean of squad. How can I do this and how would look like my controllers?

Thanks :)!

-Edit-

I'm using a link like this:

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

Where sqd is part of my query. Is this link wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

年少掌心 2024-11-16 08:53:07
<%= 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
<%= link_to("Change status", squad_path(sqd, "squad[status]" => true), :method => :put, :confirm => "Sure?") %>

in your controller (it is pretty common)

def update
  @squad = Squad.find params[:id]
  if @squad.update_attributes params[:squad]
    ...
  end
end
拥有 2024-11-16 08:53:07

是的,有。该方法称为“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

Yes there is. The method is called "update_attribute". It takes two arguments, the name of the field and the value.

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

Based on updated question

def update
  @squad = Squad.find(params[:id])
  if @squad.update_attribute(:status,params[:status])
    ...
  end
end
与他有关 2024-11-16 08:53:07

你的属性名称是什么?

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

另外,您可以阅读

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

What's the name of your attributes ?

Since it belongs to player, you can access it with player.squad.name_of_your_attributes = new_value. Don't forget to save your object if you want the changes to be saved in your DB.

Also, you could read that

EDIT: fl00r answered your edited question, no need that i repeat what he wrote.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文