Приложение / просмотров / контакты / new.html.erb
<h2>Add New Contact</h2>
<div class="row">
<div class="col-md-8">
<%= simple_form_for @contact, :url => new_user_contact_path do |f| %>
<div class="form-group">
<%= f.label :first_name %>
<%= f.text_field :first_name, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :last_name %>
<%= f.text_field :last_name, class: "form-control" %>
</div>
<div class="form-group">
<%= f.input :date_of_birth, as: :date, discard_year:true, order:[:day, :month] %>
</div>
<div class="form-group">
<%= f.label :sex %>
<%= f.select :sex, [:male, :female], class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :phone_number %>
<%= f.text_field :phone_number, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :address %>
<%= f.text_area :address, class: "form-control" %>
</div>
<div class="form-group">
<%= f.button :submit, "Submit", class: "btn btn-success btn-md btn-block" %>
</div>
</div>
<% end %>
</div>
</div>
<%= link_to "Back", user_contacts_path %>
Мои маршруты, когда я бегаю rake routes
Prefix Verb URI Pattern Controller#Action
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
user_registration POST /users(.:format) devise/registrations#create
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
user_contacts GET /users/:user_id/contacts(.:format) contacts#index
POST /users/:user_id/contacts(.:format) contacts#create
new_user_contact GET /users/:user_id/contacts/new(.:format) contacts#new
edit_user_contact GET /users/:user_id/contacts/:id/edit(.:format) contacts#edit
user_contact GET /users/:user_id/contacts/:id(.:format) contacts#show
PATCH /users/:user_id/contacts/:id(.:format) contacts#update
PUT /users/:user_id/contacts/:id(.:format) contacts#update
DELETE /users/:user_id/contacts/:id(.:format) contacts#destroy
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
index GET /index(.:format) redirect(301, /)
root GET / high_voltage/pages#show {:id=>"index"}
page GET /pages/*id high_voltage/pages#show
Конфиг / routes.rb
Rails.application.routes.draw do
devise_for :users
resources :users do
resources :contacts
end
end
Мои действия new
и create
в ContactsController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(contact_params)
@contact.user = current_user
if @contact.save
flash[:success] = "Contact was successfully created!"
redirect_to @contact.user
else
render :new
end
end
Вот в чем проблема: Я получаю сообщение об ошибке: No route matches [POST] "/users/1/contacts/new"
, когда отправляю форму по адресу http: // localhost: 3000 / users / 1 / contacts / new. В чем может быть проблема?
0
kinsomicrote
23 Мар 2016 в 15:59
1 ответ
Лучший ответ
Этот:
<%= simple_form_for @contact, :url => new_user_contact_path do |f| %>
Должно быть:
<%= simple_form_for @contact, :url => user_contacts_path do |f| %>
3
toddmetheny
23 Мар 2016 в 16:01
Когда я это сделаю, я получаю сообщение об ошибке: неинициализированные UsersControllers. Это должно случиться? Учитывая тот факт, что я использую devise.
– kinsomicrote
23 Мар 2016 в 16:19
Я считаю, что это должно затронуть контроллер контактов:
– POST /users/:user_id/contacts(.:format) contacts#create
Вы уверены, что вам нужно вложить ресурсы контактов внутри пользователя? Я не знаю логики вашего приложения. Можно сделать контакты принадлежащими создавшему пользователю, не вкладывая маршрут, и я думаю, что будет проще оставить ресурсы отдельно.
toddmetheny
23 Мар 2016 в 16:25
Не могли бы вы опубликовать свой
– routes.rb
?
toddmetheny
23 Мар 2016 в 16:25
Логика приложения такова, что у пользователя много контактов, а контакты принадлежат пользователю. Это простое веб-приложение для тестирования функциональности загрузки в PDF. Маршруты.rb выше.
– kinsomicrote
23 Мар 2016 в 16:40
Да, я бы не стал вкладывать маршруты контактов и просто установил user_id равным идентификатору current_user перед созданием контакта. Затем на странице показа контактов просто определите переменную экземпляра контакта как current_user.contacts.
– toddmetheny
23 Мар 2016 в 16:42
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.
get
. Созданный маршрут не закончится черезnew