1

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

编辑:我create_mailbox在资源中添加了补丁,:users但表单抛出了undefined methodsettings_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
4

3 回答 3

2

这将取决于属性以及您将其更改为的内容。

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

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

于 2013-11-14T01:06:58.270 回答
0

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

create_mailbox_user_path
于 2013-11-15T19:52:05.530 回答
-1

Rails 4 使用强参数来确定允许更新哪个属性,如下所示:

def user_param
  params.require(:user).permit(:attr)
end
于 2013-11-14T01:07:34.693 回答