【问题标题】:Create link in Ruby on Rails to update a specific database entry在 Ruby on Rails 中创建链接以更新特定的数据库条目
【发布时间】:2016-06-01 18:45:53
【问题描述】:

我是 Ruby on Rails 的新手,我想创建一个非常简单的应用程序。我使用脚手架创建了一个名为 users 的数据库。 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# %>

目前,我只关心更改数字,我将在其他地方呈现用户信息。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案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
    

    然后在你的用户控制器中添加方法:

    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)
    

    【讨论】:

    • 如何编写正确的链接以便调用这些方法?
    • link_to(body, url, html_options = {})
    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多