我有一个用户模型,但我需要创建一个表单来只更新一个属性。
编辑:我在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
答案 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