Ruby on rails 如何在RubyonRails中单击按钮在数据库中插入记录
我想在不使用表单或表单助手的情况下,在单击按钮时在数据库中插入一个真值。我想要一个简单的方法,当我点击按钮时,将使用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
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 %>