用户可以在我的 Ruby 应用程序上互相发送消息。表格如下:
t.string "content"
t.integer "from_id"
t.integer "reply_to_id"
t.boolean "read", :default => false
我最近添加了布尔值:read,并且我将表单链接到他们收件箱中的消息。当他们单击“标记已读”(通过表单提供的链接)时,我希望它切换:read => true。
我目前无法做到这一点。这是我目前的设置。
_mark_read.html.erb
<%= form_for(:message, :mark_read => {read: true}) do |f| %>
<div><%= f.hidden_field :read %></div>
<%= f.submit "Mark Read", class: "btn-link" %>
<% end %>
Class MessagesController < ApplicationController
def mark_read
@message = current_user.messages.build
@message.toggle!(:read)
end
config/routes.rb
match '/mark_read' => 'messages#mark_read', :via => :post, :as => :mark_read
当我单击“标记已读”时,这是我的调试信息:
--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
utf8: ✓
authenticity_token: ---
message: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
read: 'false'
commit: Mark Read
controller: static_pages
action: connect
我可以看到它甚至没有使用我的控制器......即使如此;我认为我没有正确设置它。
任何有关如何设置的建议将不胜感激。