Rails 3:使用提交按钮更新模型属性

时间:2013-01-02 21:10:50

标签: ruby-on-rails-3 button radio-button

我有一个用户模型,其中包含一个带有布尔值的“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

1 个答案:

答案 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操作