我是Ruby on Rails的新手,我想创建一个非常简单的应用程序。我使用scaffolding创建了一个名为users的数据库。用户中的两个字段是limit
和containers
,这是用户可以拥有的最大容器数以及它们可以拥有的剩余总容器数。它们都以给定的数字(例如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# %>
目前,我所关心的只是改变数字而在其他地方我将呈现用户信息。
答案 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)