如何重新路由简单的表单

时间:2017-05-19 10:32:09

标签: ruby-on-rails ruby simple-form

我被困住了。我想在我的应用程序的主页面上创建联系表单。因此,主页面上的表单如下所示:

应用/视图/ main_page.html.slim

SELECT *, `a`.`name` as `team1name`, `b`.`name` as `team2name` FROM fixtures [...]

如您所见:联系人,网址:联系路径

首先,我发现错误未定义变量联系人,之后我将联系人添加到 application_controller

现在我得到了: 未定义的方法`model_name'为零:NilClass

我的控制器:

 = simple_form_for(contact, url: contact_path) do |f|
    = f.input :name, label_html: { class: "modal__form-control" }
    = f.input :email, label_html: { class: "modal__form-control" }
    = f.input :phone, label_html: { class: "modal__form-control" }
    .modal__form-error
    = f.input :message, label_html: { class: "modal__form-control" }

曝光是gem

路由:

class ContactsController < ApplicationController
  expose(:contact, attributes: :contact)

  def create
    ContactMailer.contact(contact).deliver_now if contact.save
    respond_with(contact, location: investors_path)
  end

  private

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

我哪里出错了?我想我的应用程序使用了错误的控制器或无法找到它(联系人)。我该如何解决?

UPD:也添加了新方法。

1 个答案:

答案 0 :(得分:0)

您可以expose(:contact)中的HomeController或者您可以更改表单:

= simple_form_for(defined(:contact) ? contact : Contact.new) do |f|

不应该提供路径,因为rails可以使用多态路由助手来解决它。