使用按钮Rails更新模型字段

时间:2018-04-29 02:01:12

标签: ruby-on-rails button controller field

我的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">&times;</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>

谢谢!

2 个答案:

答案 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 %>