#ruby-on-rails #ruby #ruby-on-rails-4
#ruby-on-rails #ruby #ruby-on-rails-4
Вопрос:
У меня проблема в моей контактной form_for, у меня есть одна контактная форма, и я хочу отобразить свою контактную форму в представлении моего продукта. Если я сделаю это, у меня возникнут проблемы с моими требуемыми параметрами
Мои параметры contact_params работают в моем ContactController:
def contact_params
params.require(:contact).permit(:name, :email, :body)
end
У меня есть add в моем 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), которые не работают, рельсы говорят мне:
Unpermitted parameter: :contact
Спасибо
Комментарии:
1. Где
def contact_params
?params
обычно используется в контроллере , а не в представлении . Для чего-то вроде контактной формы, также, вероятноPOST
, действие, а неGET
как, вероятно, используется для просмотра страницы.2. Я отредактировал свой ответ! Я допустил ошибку в своем описании! Спасибо
Ответ №1:
У вас опечатка в методе #показать ProductsControler @contact = :set_contact
, вы должны вызвать метод set_contact
без :
Правильный код: @contact = set_contact
Ответ №2:
Попробуйте объединить параметры с параметрами продукта params[:product].merge!(:контакт)
например, определить параметры company_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 из моей другой формы. Работает для меня.
Удачи.