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>样式
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论