Как исправить параметры, необходимые для form_for контакта в представлении с несколькими контроллерами - PullRequest
0 голосов
/ 12 апреля 2019

У меня проблема в контактной форме_for, У меня есть одна контактная форма, и я хочу отобразить свою контактную форму в моем представлении продукта Если я это сделаю, у меня возникнут проблемы с моим параметром require

Мои contact_params работают в моем ContactController:

def contact_params
   params.require(:contact).permit(:name, :email, :body)
end

Я добавил в свой ApplicationController

def set_contact
   @contact = Contact.new params[:contact] || {}
end

и что в моем ProductsControler

show
   @contact = :set_contact
end

мой маршрут:

get 'contact', to: 'contacts#new', as: 'new_contact'
post 'contact', to: 'contacts#create', as: 'create_contact'

Мой рендер такой же, как:

<%= render :partial => "contacts/contact" %>

и мое мнение в _contact.html.erb:

 <%= form_for @contact, url: create_contact_url do |f| %>
  <%= f.text_field :name  %>
  <%= f.email_field :email %>
  <%= f.text_area :body  %>
 <%= f.submit 'Send' %>

Рельсы говорят мне:

ActionController::ParameterMissing (param is missing or the value is empty: contact):

Если я удаляю require (: contact), который не работает, rails говорят мне:

Unpermitted parameter: :contact

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

У вас есть опечатка в методе #show ProductsControler @contact = :set_contact, вы должны вызвать метод set_contact без :

Правильный код: @contact = set_contact

0 голосов
/ 12 апреля 2019

Попробуйте объединить параметры с параметрами продукта params [: product] .merge! (: Contact)

например, def company_params params [: company] .merge! (Users_attributes: {'0': user_params.to_h}) params.require (: company) .permit (: name,: contact_person_name,: email,: contact_person_number,: Terms_and_conditions) end

Слушайте, что атрибуты users_attributes принадлежат моей другой форме.У меня работает.

Удачи.

...