Rails: 从另一个控制器保存用户字段
Rails: saving a user field from another controller
组合:Rails4、Mongoid
我有一个管理控制台仪表板:/admin/moderator-slug/dashboard
列出所有用户,并带有一个按钮来管理该用户:
<%= link_to "Manage", { controller: 'admin', action: 'manage', user: user} %>
如您所见,我在参数中传递了该用户。
在我的管理控制器中,我的管理操作如下:
def manage
@user = User.find(params[:user])
if params[:follow_up].present?
@user.follow_up = Date.strptime(params[:follow_up], "%m/%d/%Y")
end
end
成功进入管理页面:/admin/moderator-slug/manage?user=managed-user-slug
并通过我用按钮传递的参数找到@user
在我的用户模型中,我创建了一个时间字段 "follow_up"。
我想用日期选择器选择的特定时间更新该字段,所以我创建了以下 form_tag:
<%= form_tag manage_path, method: "get", remote: true do %>
Follow up: <%= text_field_tag "follow_up", nil, autocomplete: "off" %>
<%= submit_tag "Create" %>
<% end %>
当我按下提交按钮时,我得到 Mongoid::Errors::InvalidFind
当我传递一个隐藏字段 <%= hidden_field_tag :user , @user %>
时,我得到 404。此外,我觉得我的设置不是最健康的,所以传递那个隐藏字段确实是一种解决方法避免了。
我的路线:
authenticate :user, -> (u) { u.is_moderator? } do
match 'admin/:slug/dashboard', to: 'admin/admin#dashboard', via: 'get', as: :dashboard
match 'admin/:slug/manage', to: 'admin/admin#manage', via: 'get', as: :manage
end
有什么建议吗?
看来您应该将 user slug 添加到您的表单中 URL:
<%= form_tag manage_path(user: @user), method: "get", remote: true do %>
组合:Rails4、Mongoid
我有一个管理控制台仪表板:/admin/moderator-slug/dashboard
列出所有用户,并带有一个按钮来管理该用户:
<%= link_to "Manage", { controller: 'admin', action: 'manage', user: user} %>
如您所见,我在参数中传递了该用户。 在我的管理控制器中,我的管理操作如下:
def manage
@user = User.find(params[:user])
if params[:follow_up].present?
@user.follow_up = Date.strptime(params[:follow_up], "%m/%d/%Y")
end
end
成功进入管理页面:/admin/moderator-slug/manage?user=managed-user-slug
并通过我用按钮传递的参数找到@user
在我的用户模型中,我创建了一个时间字段 "follow_up"。
我想用日期选择器选择的特定时间更新该字段,所以我创建了以下 form_tag:
<%= form_tag manage_path, method: "get", remote: true do %>
Follow up: <%= text_field_tag "follow_up", nil, autocomplete: "off" %>
<%= submit_tag "Create" %>
<% end %>
当我按下提交按钮时,我得到 Mongoid::Errors::InvalidFind
当我传递一个隐藏字段 <%= hidden_field_tag :user , @user %>
时,我得到 404。此外,我觉得我的设置不是最健康的,所以传递那个隐藏字段确实是一种解决方法避免了。
我的路线:
authenticate :user, -> (u) { u.is_moderator? } do
match 'admin/:slug/dashboard', to: 'admin/admin#dashboard', via: 'get', as: :dashboard
match 'admin/:slug/manage', to: 'admin/admin#manage', via: 'get', as: :manage
end
有什么建议吗?
看来您应该将 user slug 添加到您的表单中 URL:
<%= form_tag manage_path(user: @user), method: "get", remote: true do %>