2017-05-19 11 views
0

私は立ち往生しています。私は自分のアプリケーションのメインページに連絡フォームを作成したいと思います。 連絡先、URL:接触経路簡単な書式を変更する方法

フォームを見たよう

アプリ/ビュー/ main_page.html.slim

= 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" } 

:だから、メインページ上のフォームは次のようになりますまず、私はエラーを持っています。未定義の変数の連絡先、それに続いて連絡先をapplication_controllerに追加しました。

今私が持っている:nilのための 未定義のメソッド `MODEL_NAME」:NilClass

を私のコントローラ:

resource :contact, only: %i(new create) 

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 

公開がgem

ルーティングです

どこが間違っているの?私のアプリケーションは間違ったコントローラを使用していたり​​、見つけられなかったりします(連絡先)。私はそれをどのように解決するべきですか?

UPD:新しいメソッドも追加されました。

+0

'expose'とは​​何ですか?どうやって 'contact'変数が定義されていますか?そしてなぜ 'Contacts'に' new'アクションがないときに 'contract'の' new'ルートを定義していますか? –

+0

@TomLordが公開するhttps://github.com/hashrocket/decent_exposure – mswiszcz

+0

@TomLord更新を参照してください –

答えて

0

あなたはどちらかあなたのHomeControllerかからexpose(:contact)フォーム変えることができ:レールが多型ルーティングヘルパでそれを把握することができますとして必要すべきではない

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

パスを提供します。

関連する問題