在Ruby on Rails中创建链接以更新特定的数据库条目

时间:2016-06-01 18:45:53

标签: ruby-on-rails ruby

我是Ruby on Rails的新手,我想创建一个非常简单的应用程序。我使用scaffolding创建了一个名为users的数据库。用户中的两个字段是limitcontainers,这是用户可以拥有的最大容器数以及它们可以拥有的剩余总容器数。它们都以给定的数字(例如15)开始,但是当用户需要一个containers时,它将下降到14并且每次取一个时将继续减少,直到它达到0。容器,container的数量增加1,直到最大数字,在我的例子中为15。

由于我使用Ruby脚手架创建了这个,我现在可以立即转到每个用户的编辑页面并手动更改containers值,但这可以让我将其更改为任意数字。在users/:id页面上,我想要一个类似现在的编辑链接的链接

<%= link_to 'Edit', edit_user_path(@user) %>

并且有类似的东西,但是按照

的方式
<%= link_to 'Take container', #run method to decrease and return here# %>
<%= link_to 'Return container', #run method to increase and return here# %>

目前,我所关心的只是改变数字而在其他地方我将呈现用户信息。

1 个答案:

答案 0 :(得分:1)

AJAX在这方面非常适合,但这会使问题复杂化,所以我会坚持用Rails来做。

首先,您需要编辑routes.rb文件,以包含以下内容:

get '/remove_container/:user_id', to: 'users#remove_container', :as => :remove_container
get '/add_container/:user_id', to: 'users#add_container', :as => :add_container

然后在Users控制器中添加方法:

def remove_container
  user_id = params[:user_id]
  @user = User.find user_id
  # code to change container number
  redirect_to edit_user_path(@user)
end
def add_container
  user_id = params[:user_id]
  @user = User.find user_id
  # code to change container number
  redirect_to edit_user_path(@user)
end

有很多事情要做得更好,但这无论如何都应该让你朝着正确的方向前进。

可以手动或通过路径完成这些链接:

<a href="/remove_container/[:user_id]">Remove Container</a>

link_to "Remove Container", remove_container_path(@user)
相关问题