登录 主页

想要实现点击按钮就可以变为另一个按钮(eg: 点击'开启监控',变为'关闭')

2023-09-09 10:34AM

1.先在表中增加列

在enterprises表中增加monitor_status列

 class AddMonitorStatusToEnterprises < ActiveRecord::Migration
    def change
       add_column :enterprises, :monitor_status, :boolean, default: true
    end
 end

2. 增加路由

resources :enterprises do
    collection do
       post :monitor_status
    end
end

3. 在controller里面增加action

def monitor_status
   @enterprise = Enterprise.find(params[:id])
   @enterprise.monitor_status = !@enterprise.monitor_status
   @enterprise.save!
    redirect_back fallback_location: root_path
end        

4. 在视图页面增加button_to

#app/views/enterprises/index.html.erb

 <% text =  enterprise.monitor_status ? '关闭监控' : '开启监控' %>
 <%= button_to text, monitor_status_enterprises_path({id: enterprise.id, monitor_status: params[:monitor_status] == 'true' ? 'false' : 'true'}),  method: :post, class: "btn btn-primary btn-sm" %>

然后在浏览器刷新页面,这个功能就实现了,但是这个页面的开启,关闭按钮的css属性是一样的

要想这两个的css属性有所不同,可以使用下面的代码:

<% if enterprise.monitor_status? %>

    <% text = '开启监控' %>

    <% status_class = 'status_true' %>

<% else %>

    <% text = '关闭监控' %>

    <% status_class = 'status_false' %>

<% end %>

<%= button_to text, monitor_status_enterprises_path(id: enterprise.id, status: !enterprise.status), method: :post, class: "#{status_class}" %>

记得增加status_true和status_false的<style>样式

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论