管理员对代理创建的产品的认可。我在产品模型中发布了一个布尔字段,默认情况下为false。 Rails 5应用

时间:2018-12-20 16:57:18

标签: jquery ruby ruby-on-rails-5

我有两种不同的代理和管理员设计模型,然后有一种产品模型,代理可以创建可以由管理员用户批准的新产品。

我在产品模型中发布了一个布尔字段,默认情况下为false。

管理员还可以查看产品。

我需要有一个发布按钮,该按钮将布尔值更改为true,而无需重新加载页面。然后,发布按钮变为取消发布。如何使用jquery或其他方法实现。

我是Rails的新手,这是我的第一个应用程序。需要指导。 谢谢你们。

1 个答案:

答案 0 :(得分:0)

您正在这里寻找两种不同的东西。

  1. 在不重新加载页面的情况下将更改提交到后端。
  2. 发生后端更改时,更新前端上的发布按钮。

(下面的代码只是示例代码-您将需要它来适应当前的设置)

我可以通过点击“发布”按钮remote: true来解决这个问题。也许您的链接看起来像这样:

<%= link_to “Publish”, product_path(product_id: product.id), class: "publish", remote: true %>

remote: true将使它成为AJAX请求。

在您的JavaScript中,您将需要关注成功的ajax请求,并在成功完成后执行一些操作。

$(‘.publish a’).on (‘ajax:success’, updatePublishBtn)

function updatePublishBtn(event, data) {
  $(‘.publish a’).text("Unpublish");
}

类似这样的事情将监视与publish类的链接,并在收到成功的Ajax响应时将文本更新为“取消发布”。实际上,您可能希望您的Javascript隐藏“发布”按钮并显示一个“未发布”按钮(其工作方式相同),因为单击“取消发布”应该使用不同的路线...

这将为您提供总体思路,但是您需要根据您的用例填写具体信息(或在您的答案中提供代码,以便我可以更具体)。