【问题标题】:function to change attribute using a button使用按钮更改属性的功能
【发布时间】:2016-06-12 19:22:53
【问题描述】:
我正在用 Ruby on Rails 创建一个小型大学项目,但遇到了一个问题:我有一个名为 Person 的表和另一个名为 Tools 的表。
人有很多工具,每一种工具都被一个人所拥有。
我需要添加一个允许在系统的人员之间借用工具的功能。为此,我在 Tools 表中创建了一个名为“loan”的属性,其值为 0 表示该工具不是此借用的,如果为 1,则表示此借用。为了显示工具,我创建了一个具有借用工具功能的按钮。我的问题是如何使此按钮将“工具”表中的“贷款”属性从 0 更改为 1,然后将其反转。有人会有解决方案或更好的建议吗?
【问题讨论】:
标签:
ruby
ruby-on-rails-4
activerecord
model
controller
【解决方案1】:
我会像这样创建 2 条名为“barrow”和“retrieve”的路线:
#config/routes.rb
get '/tool/:id/barrow' => 'tools#barrow', as: :barrow
get '/tool/:id/retrieve' => 'tools#retrieve', as: :retrieve
现在在您看来,您可以执行类似的操作
# tool.index.html.erb
...
<% if tool.loan %>
<%= link_to retrieve_path(tool), 'Retrieve', class: 'btn ...' %>
<% else %>
<%= link_to barrow_path(tool), 'Barrow', class: 'btn ...' %>
<% end %>
...
现在你必须创建控制器动作,你必须创建检索和手推车方法
#app/controllers/tool_controller.rb
class UserController < ApplicationController
...
def retrieve
@tool = Tool.find_by(params[:tool])
@tool.update_attributes(:loan, 0)
end
def barrow
@tool = Tool.find_by(params[:tool])
@tool.update_attributes(:loan, 1)
end
...
end
希望对你有帮助