/ / renderuj form_do częściowego widoku - ruby ​​na szynach, ruby, formularze, renderowanie, częściowe

renderuj formę, aby była częściowo widoczna - ruby ​​na szynach, ruby, formularze, renderowanie, częściowe

Z góry dziękujemy za pomoc. Próbowałem już tego dokonać, ale nie mogę go uruchomić.

Podczas próby wyświetlenia kontaktów / _new.html.erb wewnątrz stron / home.html.erb Otrzymuję "Pierwszy argument w formularzu nie może zawierać zera lub być pusty"

Myślę, że ma to coś wspólnegoKontroler Rails patrzy. Czy Rails wie, że powinien wyglądać w moim kontrolerze Kontakty, mimo że widok główny pochodzi z PagesController? Próbowałem wielu rzeczy i często to badałem. "Próbowałem lokalnych i zmieniając adres URL i działania.To działa, gdy nie jest w częściowe.To działa, gdy ciężko kod form_for Contact.new.

Dzięki jeszcze raz!

 _new.html.erb

<%= form_for @contact do |f| %>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :email %>
<%= f.text_field :email, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :comments %>
<%= f.text_area :comments, class: "form-control" %>
</div>
<%= f.submit "Submit",class: "btn btn-default" %>
<% end %>


class ContactsController < ApplicationController
def new
@contact = Contact.new
end

def create
@contact = Contact.new(contact_params)
if @contact.save
redirect_to root_path, notice: "Message sent."
else
redirect_to root_path, notice: "Error occured."
end
end
private
def contact_params
params.require(:contact).permit(:name, :email, :comments)
end
end

Render with:
<%= render new_contact_path %>
in the views/pages/home.html.erb

Odpowiedzi:

1 dla odpowiedzi № 1

To dlatego, że @contact nie istnieje w twoim pages_controller.rb, i w tej chwili, aby załadować zmienną kontaktową w twoim form_for rzuca ten błąd.

Masz tylko to zdefiniowane w twoim contacts_controller ale to nie jest dostępne po załadowaniu pages/home Zobacz, pójdzie poszukać @contact zmienna zdefiniowana w twoim pages_controller konkretnie w twoim home metoda.

Spróbuj dodać go do swojego pages_controller.rb tak jak:

# app/controllers/pages_controller
def home
@contact = Contact.new
end