我有一个用户模型,其中包含一个带有布尔值的“email switch”列。我想在我的视图中创建一个按钮,允许用户打开和关闭他们的电子邮件。我无法通过提交按钮更新用户模型中的值。
<%= form_for :user do |f| %>
<label>On</label>
<%= f.radio_button :email_switch, true %>
<label>Off</label>
<%= f.radio_button :email_switch, false %>
<%= f.submit "Save", :controller => "dashboard_emails", :action => "update", :method => "put" %>
<% end %>
class DashboardEmailsController < ApplicationController
before_filter :require_user
def index
end
def update
end
private
def require_user
@user = @logged_in_user
end
class User
field :email_switch, type: Boolean, default: false
end
答案 0 :(得分:1)
您需要将参数传递给form_for
而不是f.submit
来电。如果您将持久用户分配到@user
,则应该可以执行以下操作:
<%= form_for @user do |f| %>
<label>On</label>
<%= f.radio_button :email_switch, true %>
<label>Off</label>
<%= f.radio_button :email_switch, false %>
<%= f.submit "Save" %>
<% end %>
当然,您需要resources :users
config/routes.rb
才能使其正常运行。然后,这应该向/users/47
发送PUT请求,这反过来会触发#update
UsersController
操作