2015-08-04 2 views
1

Combo: Rails4, Mongoid У меня есть консоль администратора панель: /admin/moderator-slug/dashboard , который содержит список всех пользователей с помощью кнопки, чтобы пойти управлять этим пользователем:Rails: сохранение поля пользователя от другого контроллера

<%= 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 через Params я прохожу с кнопкой.

В моей модели пользователя я создал поле «follow_up» времени.

Я хочу обновить это поле с определенным временем, выбранным с DatePicker, поэтому я создал следующий 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 

Любые предложения?

+0

Пожалуйста, покажите вывод 'граблей routes'. – EugZol

+0

"dashboard GET /admin/:slug/dashboard(.:format) admin/admin # dashboard" и "управлять GET /admin/:slug/manage(.:format) admin/admin # manage" – Ben

+0

На самом деле я в основном хотел см. ярлык URL-адреса 'manage_path', добавьте все строки, содержащие' manage_path', в [gist] (https://gist.github.com/) или ваш вопрос – EugZol

ответ

1

Похоже, вы должны добавить пользователя слизняка в форму URL:

<%= form_tag manage_path(user: @user), method: "get", remote: true do %> 
+0

Спасибо, это то, чего мне не хватало. – Ben

+0

Добро пожаловать. – EugZol

Смежные вопросы