我的Rails 5项目中有一个消息传递系统,其中Message模型有一个isread
字段,用于指示收件人是否已阅读该消息。
我正在使用引导模式来查看消息,并希望在模式关闭时消息的isread
字段更改为true。
有人可以通过button_tag解释如何执行此操作,或者让控制器中的按钮标记调用方法执行此操作吗?
类似的东西:
message.isread = true
message.save!
从我的视图中按下“关闭”按钮时执行:
<div id="modal1<%= index %>" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title"><%= message.subject %></h4>
</div>
<div class="modal-body">
<p><%= message.content %></p>
</div>
<div class="modal-footer">
<%= button_tag "Close", :class => "btn btn-default", "data-dismiss" => "modal" %>
</div>
</div>
</div>
</div>
谢谢!
答案 0 :(得分:0)
如果您想要一个按钮点击调用控制器中的方法,您需要首先捕获javascript
$(".btn-default").click(function(){
});
然后你想对控制器方法进行Ajax调用
$.ajax({
url: "/message/update_is_read",
type: "POST",
data: {is_read: isRead},
success: function(resp) {
console.log(resp);
},
error: function(resp) {
console.log(resp);
},
});
然后在你的控制器中用
抓住它def update_is_read
is_read = params[:is_read]
end
确保添加路径路径
post '/messages/update_is_read', to: 'messages#update_is_read', as: '/messages/update_is_read'
您可以修改控制器代码以进行保存。
答案 1 :(得分:0)
您可以在控制器中定义一个新操作,将属性isread
更新为true并使用button_to
帮助程序
#routes
resources :messages do
post :is_read, on: :member
end
#messages controller
def is_read
@message = Message.find(params[:id])
@message.update(isread: true)
redirect_to ...
end
#view
<%= button_to "Close", is_read_message_path %>