質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

6119閲覧

Rails4 お問い合わせフォーム

smith

総合スコア73

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2015/02/14 08:07

編集2015/02/14 14:02

ボールドテキストテラテイルにもあるようなfooterにお問い合わせフォームを作りたいのですがどうしたら良いでしょうか

ideaというコントローラーで作って<%= render partial: 'ideas/form' %>で呼び出しましたが
First argument in form cannot contain nil or be emptyとエラーになります。

lang

1class IdeasController < ApplicationController 2 before_action :set_idea, only: [:show, :edit, :update, :destroy] 3 4 # GET /ideas 5 # GET /ideas.json 6 def index 7 @ideas = Idea.all 8 @idea = Idea.new 9 end 10 11 # GET /ideas/1 12 # GET /ideas/1.json 13 def show 14 end 15 16 # GET /ideas/new 17 def new 18 @idea = Idea.new 19 end 20 21 # GET /ideas/1/edit 22 def edit 23 end 24 25 # POST /ideas 26 # POST /ideas.json 27 def create 28 @idea = Idea.new(idea_params) 29 30 respond_to do |format| 31 if @idea.save 32 format.html { redirect_to @idea, notice: 'Idea was successfully created.' } 33 format.json { render :show, status: :created, location: @idea } 34 else 35 format.html { render :new } 36 format.json { render json: @idea.errors, status: :unprocessable_entity } 37 end 38 end 39 end 40 41 # PATCH/PUT /ideas/1 42 # PATCH/PUT /ideas/1.json 43 def update 44 respond_to do |format| 45 if @idea.update(idea_params) 46 format.html { redirect_to @idea, notice: 'Idea was successfully updated.' } 47 format.json { render :show, status: :ok, location: @idea } 48 else 49 format.html { render :edit } 50 format.json { render json: @idea.errors, status: :unprocessable_entity } 51 end 52 end 53 end 54 55 # DELETE /ideas/1 56 # DELETE /ideas/1.json 57 def destroy 58 @idea.destroy 59 respond_to do |format| 60 format.html { redirect_to ideas_url, notice: 'Idea was successfully destroyed.' } 61 format.json { head :no_content } 62 end 63 end 64 65 private 66 # Use callbacks to share common setup or constraints between actions. 67 def set_idea 68 @idea = Idea.find(params[:id]) 69 end 70 71 # Never trust parameters from the scary internet, only allow the white list through. 72 def idea_params 73 params.require(:idea).permit(:body) 74 end 75end 76

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

rails new . rails generate scaffold users name:string

index のビューにフォームの呼び出し(render partial: 'users/form')を追記し、同じエラー内容が出るよう再現してみました

![render error]WIDTH:585

form_for はコントローラが用意するモデル オブジェクトを必要とします
おそらく、コントローラ側でフォームに利用する変数の用意がされていないのが原因ではないでしょうか

たとえば、以下のように@user に、フォームで利用するのに必要なモデル オブジェクトを代入するコードを追記し、確認しましたが、エラーなく動作させることが出来ました

lang

1 def index 2 @users = User.all 3 @user = User.new 4 end

あるいはパーシャル ビュー側でform_for の代わりにform_tag を呼び出すコードに書き換えてもいいかもしれません

参考になれば幸いです

Links

投稿2015/02/14 13:42

編集2015/02/14 13:46
gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

smith

2015/02/14 14:07

scaffoldで作りました。追加情報としてコントローラーも追加しました。
smith

2015/02/16 06:47

各コントローラにbefore actionで@idea = Idea.newの実行する用意しました。 もっといい方法ないのかな
guest

0

たぶん render partialが悪いのではなくその先のideas/formの中身が悪いように見えます。

投稿2015/02/14 12:38

hello-world

総合スコア1342

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問