使用按钮 Rails 更新模型字段
Update model field with button Rails
我的 Rails 5 项目中有一个消息传递系统,其中消息模型有一个 isread
字段来指示收件人是否已阅读消息。
我正在使用 bootstrap 模式查看消息,并希望消息的 isread
字段在模式关闭时更改为 true。
有人可以解释一下如何从 button_tag 中做到这一点,或者让控制器中的按钮标签调用方法来做到这一点吗?
类似于:
message.isread = true
message.save!
在我看来按下 "Close" 按钮时执行:
<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>
谢谢!
如果您希望通过单击按钮调用控制器中的方法,您需要首先捕获 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'
可以修改控制器代码保存
您可以在控制器中定义一个新操作,将属性 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 %>
我的 Rails 5 项目中有一个消息传递系统,其中消息模型有一个 isread
字段来指示收件人是否已阅读消息。
我正在使用 bootstrap 模式查看消息,并希望消息的 isread
字段在模式关闭时更改为 true。
有人可以解释一下如何从 button_tag 中做到这一点,或者让控制器中的按钮标签调用方法来做到这一点吗?
类似于:
message.isread = true
message.save!
在我看来按下 "Close" 按钮时执行:
<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>
谢谢!
如果您希望通过单击按钮调用控制器中的方法,您需要首先捕获 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'
可以修改控制器代码保存
您可以在控制器中定义一个新操作,将属性 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 %>