Rails 4创建表单以仅更新一个属性

时间:2013-11-14 01:04:08

标签: ruby-on-rails

我有一个用户模型,但我需要创建一个表单来只更新一个属性。

编辑:我在create_mailbox资源中添加了:users补丁,但该表单引发了undefined method settings_create_mailbox_path'错误。任何人都可以给我一些关于这个成员补丁/资源路由如何工作的见解吗?

以下是表格:

<%= form_for @user, url: settings_create_mailbox_path(@user) do |f| %>
  <%= f.text_field :rss_mailbox, autocomplete: 'off'%>
  <button type="submit" class="button">Create Mailbox</button>
<% end %>

这是用户路线:

resources :users, id: /.*/ do
    member do
      patch :settings_update, controller: :settings
      patch :create_mailbox, controller: :settings
      patch :view_settings_update, controller: :settings
      patch :sharing_services_update, controller: :sharing_services
      patch :actions_update, controller: :actions
    end
  end

这是设置路线:

get :settings, to: 'settings#settings'
  namespace :settings do
    get :account
    get :billing
    get :import_export
    get :feeds
    get :help
    post :update_credit_card
    post :mark_favicon_complete
    post :update_plan
    post :font
    post :font_increase
    post :font_decrease
    post :entry_width
  end

3 个答案:

答案 0 :(得分:2)

这取决于属性以及您要将其更改为什么。

例如,如果它是一个简单的布尔字段切换,你可以使用一个触发ajax请求的链接,它会进行更改并返回一些HTML(例如,更新你点击的链接)。 / p>

如果是其他的话,例如。文本字段或字符串或其他内容,form_for @user将是典型的方式。但是表单只有一个字段,处理表单的控制器将设置其强参数(或Rails 3的attr_accessible),以便它只接受该字段的数据。

答案 1 :(得分:0)

使用了错误的路线名称。这是正确的:

create_mailbox_user_path

答案 2 :(得分:-1)

Rails 4使用Strong Parameters确定允许更新的属性,如下所示:

def user_param
  params.require(:user).permit(:attr)
end