RESTful Routes помогают в Rails 3

#ruby-on-rails #ruby-on-rails-3 #routes

#ruby-on-rails #ruby-on-rails-3 #маршруты

Вопрос:

Я использую Rails 3, Devise и Mongoid.

Я считаю, что могу выполнить то, что мне нужно, используя RESTful Routes, но я не уверен, как это сделать. Позвольте мне объяснить, что у меня есть и что я пытаюсь сделать.

Допустим, у меня есть два контроллера — User и Simpleform.

Simpleform — это общедоступная форма (аутентификация не требуется), которая при отправке отображается в учетной записи пользователя (при входе в систему).

У меня в системе несколько пользователей, и каждый из них увидит отправленные формы, которые относятся конкретно к ним.

Итак, вопрос в том, как мне получить общедоступную форму для отправки в учетную запись конкретного пользователя?

На данный момент маршрут для заполнения новой формы выглядит следующим образом «site.com/simpleform/new «. Я думаю, что могу использовать маршруты, чтобы это выглядело следующим образом «site.com/simpleform/user_id/new «или «site.com/user_id/simpleform/new «. Думаю, любой вариант сработал бы. Теперь, когда форма отправляется от кого-то общедоступного, приложение также знает, с каким пользователем ее связать, благодаря user_id в URL.

Я думаю, что логика работает, и RESTful Routes могут это реализовать, я просто не уверен, как это сделать.

Комментарии:

1. не могли бы вы уточнить, пожалуйста. Вы говорите, что для отправки Simpleform не потребуется проверка подлинности, но вы хотите, чтобы она была связана с пользователем? Каким-то образом вы должны предоставить идентификатор пользователя, чтобы связать Simpleform с пользователем. Либо пользователь должен войти в систему, когда он / она отправляет форму (простой вложенный ресурс). Или форма должна включать поле для идентификатора пользователя (позволяющее любому связать simpleform с любым пользователем). Вы хотите потребовать, чтобы пользователь вошел в систему, прежде чем он получит доступ к SimpleForm и отправит его?

2. Или вы хотите, чтобы кто-нибудь увидел SimpleForm, а затем был вынужден войти в систему при попытке отправить форму?

3. Ни то, ни другое. Допустим, у вас есть компания A и «общественность (много людей)». У компании A есть учетная запись в моем приложении и форма, которую они хотят разместить на своем сайте. Любой желающий может заполнить форму на сайте компании А и отправить ее (аутентификация не требуется). Однако компании A необходимо войти в систему, чтобы увидеть отправленную форму. У нескольких компаний есть учетные записи в моем приложении, поэтому мне нужен способ узнать, когда отправляется общедоступная форма, к какой компании она принадлежит. Таким образом, решение состоит в том, чтобы указать идентификатор компании в URL-адресе формы. В этом есть немного больше смысла?

Ответ №1:

Каждый пользовательский ресурс имеет один связанный ресурс SimpleForm.

Итак, я бы подумал, что ваш маршрут будет похож:

   resources :users do
    resource :simpleform
  end
  

И маршруты будут выглядеть как:

      user_simpleform POST   /users/:user_id/simpleform(.:format)                  {:action=>"create", :controller=>"simpleforms"}
 new_user_simpleform GET    /users/:user_id/simpleform/new(.:format)              {:action=>"new", :controller=>"simpleforms"}
edit_user_simpleform GET    /users/:user_id/simpleform/edit(.:format)             {:action=>"edit", :controller=>"simpleforms"}
                     GET    /users/:user_id/simpleform(.:format)                  {:action=>"show", :controller=>"simpleforms"}
                     PUT    /users/:user_id/simpleform(.:format)                  {:action=>"update", :controller=>"simpleforms"}
                     DELETE /users/:user_id/simpleform(.:format)                  {:action=>"destroy", :controller=>"simpleforms"}
               users GET    /users(.:format)                                      {:action=>"index", :controller=>"users"}
                     POST   /users(.:format)                                      {:action=>"create", :controller=>"users"}
            new_user GET    /users/new(.:format)                                  {:action=>"new", :controller=>"users"}
           edit_user GET    /users/:id/edit(.:format)                             {:action=>"edit", :controller=>"users"}
                user GET    /users/:id(.:format)                                  {:action=>"show", :controller=>"users"}
                     PUT    /users/:id(.:format)                                  {:action=>"update", :controller=>"users"}
                     DELETE /users/:id(.:format)                                  {:action=>"destroy", :controller=>"users"}
  

Комментарии:

1. Это сработало. Мне нужно выяснить некоторые разрешения для аутентификации с различными аспектами формы (редактировать, создавать, показывать и т.д.) — Но это не является частью этого вопроса. Спасибо за помощь.