Ruby on rails 如何在RubyonRails中单击按钮在数据库中插入记录

Ruby on rails 如何在RubyonRails中单击按钮在数据库中插入记录,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想在不使用表单或表单助手的情况下,在单击按钮时在数据库中插入一个真值。我想要一个简单的方法,当我点击按钮时,将使用RubyonRails在数据库中存储一个真值。我怎样才能做到这一点。我没有使用复选框或单选按钮。我在用按钮 这是迁移文件 class CreateNewTableNotification < ActiveRecord::Migration[5.1] def change create_table :notifications do |t| t.boo

我想在不使用表单或表单助手的情况下,在单击按钮时在数据库中插入一个真值。我想要一个简单的方法,当我点击按钮时,将使用RubyonRails在数据库中存储一个真值。我怎样才能做到这一点。我没有使用复选框或单选按钮。我在用按钮

这是迁移文件

class CreateNewTableNotification < ActiveRecord::Migration[5.1]
  def change
    create_table :notifications do |t|

      t.boolean :notify
      t.timestamps
    end
  end
end

试着这样做:

另外,最好使用REST路由,而不是“/notification/mark/your_id”,这在下面的代码中仅用作示例


您似乎想将真/假逻辑添加到现有的:通知表中?如果是,

您必须运行:

rails g migration AddCheckToNotifications check:boolean
在迁移文件中,将默认状态添加到布尔值:

 t.boolean :notify, default: false
现在,没有“真正”的方式在没有表单的情况下切换布尔值。通常,您总是希望创建一个表单,以便能够与数据库通信

现在,因为我不知道你到底想实现什么,我假设触发布尔值的方法是最好的解决方案。因此,首先,在通知控制器内创建一个新方法:

  def toggle_check
    @notification = Notification.find(params[:notification_id])
    if @notification.check == false
      @check = @notification.update(check: true)
    else
      @check = @notification.update(check: false)
    end
    redirect_to @notification
  end
现在您需要为您的方法指定一个特殊路由,在routes.rb中创建一个新路径,如下所示:

resources :notifications do
    collection do
      get :toggle_check
    end
  end
现在,最后一步是创建一个链接,该链接将使用切换方法调用路径和控制器:

 <%= link_to "Check Toggle", :controller => :notifications, :action => :toggle_check, notification_id: @notification.id %>
编辑:现在这个工作很好!你甚至不需要一个单独的错误语句路由,这个方法会自动检查你的布尔值是真还是假。只需添加一个

<%= @notification.check %>
添加到show.html.erb文件,您将看到无论何时单击该链接,true/false都将更改

下面是我的GitHub上的一个小例子:

让我知道这是否对你有帮助


你好

如果您不介意使用表单包装器,也可以使用可能更干净的表单包装器来完成视图。是的,我确实希望您这样做..但问题是我希望按钮单击不复选框..只需单击按钮,值存储为true..当再次单击按钮时,其值将为false..简单的示例,如media player中的播放/暂停按钮。当单击按钮时,它将播放当我们再次单击按钮时,它将暂停..有你签了我的项目?没有复选框。下载我制作的GitHub项目,上面有一个按钮,每当单击该按钮时,它就会变成true/false。上面显示的代码就是这样做的,没有复选框。问候语!
<%= @notification.check %>