こんにちは私は作成したソーシャルネットワーキングサイトにwikiを統合しようとしています。私はまだそれを統合する前にwikiを作成しています。だから私は、最初に作られた、次のようにRailsでwikiアプリケーションを作成中にanswer_urlエラーが発生しました
rails generate scaffold Question title:string body:text
rails generate scaffold Answer question_id:integer body:text
ごとに、私のモデルファイルは、次のとおりです。
question.rb:
class Question < ActiveRecord::Base
has_many :answers
validates :title, :presence => true
validates :body, :presence => true
end
answer.rb
class Answer < ActiveRecord::Base
belongs_to :question
validates :question_id, :presence => true
validates :body, :presence => true
end
次のように私のコントローラのファイルは以下のとおりです。
question_controller.rb:
class QuestionsController < ApplicationController
def index
@questions = Question.all
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @questions }
end
end
def show
@question = Question.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @question }
end
end
def new
@question = Question.new
respond_to do |format|
format.html # new.html.erb
format.json { render :json => @question }
end
end
def edit
@question = Question.find(params[:id])
end
def create
@question = Question.new(params[:question])
respond_to do |format|
if @question.save
format.html { redirect_to @question, :notice => 'Question was successfully created.' }
format.json { render :json => @question, :status => :created, :location => @question }
else
format.html { render :action => "new" }
format.json { render :json => @question.errors, :status => :unprocessable_entity }
end
end
end
def update
@question = Question.find(params[:id])
respond_to do |format|
if @question.update_attributes(params[:question])
format.html { redirect_to @question, :notice => 'Question was successfully updated.' }
format.json { head :ok }
else
format.html { render :action => "edit" }
format.json { render :json => @question.errors, :status => :unprocessable_entity }
end
end
end
end
answer_controller.rbは次のとおりです。
class AnswersController < ApplicationController
def new
@answer = Answer.new
respond_to do |format|
format.html # new.html.erb
format.json { render :json => @answer }
end
end
def create
@question = Question.find(params[:question_id])
@answer = @question.answers.create!(params[:answer])
respond_to do |format|
if @answer.save
format.html { redirect_to @answer, :notice => 'Answer was successfully created.' }
format.json { render :json => @answer, :status => :created, :location => @answer }
else
format.html { render :action => "new" }
format.json { render :json => @answer.errors, :status => :unprocessable_entity }
end
end
end
end
最後に私のルートファイルは次のとおりです。
routes.rbを
SampleApp::Application.routes.draw do
resources :questions do
resources :answers
end
........................
質問に対する
ビューファイルは次のとおりです。
show.html.erb:
<%= render :partial => @question %>
<%= link_to 'Edit', edit_question_path(@question) %> |
<%= link_to 'Back', questions_path %>
<br/> <br/>
<h4>Answers</h4>
<div id="answers">
<% @question.answers.each do |answer| %>
<%= div_for answer do %>
<p> <strong>
Posted <%= time_ago_in_words(answer.created_at) %>
</strong>
<br /> <%= h(answer.body) %>
</p>
<% end %>
<% end %>
</div>
<%= form_for [@question, Answer.new] do |f| %>
<p>
<%= f.label :body, "New Answer" %>
<br />
<%= f.text_area :body %>
</p>
<p><%= f.submit "Add Answer" %></p>
<% end %>
私は新しい質問を作成しよう
がある私にエラーを与えるものではありません。私はすでに作成した質問を開くと、それは、コンテンツを表示するが、私はそれは私に次のエラーを与え、既に作成した質問に対する新しい回答を追加しようとしているとき、私は、エラーが生じています:**NoMethodError in AnswersController#create**
undefined method `answer_url' for #<AnswersController:0x103273c70>
app/controllers/answers_controller.rb:18:in `create'
app/controllers/answers_controller.rb:16:in `create'
**Request**
**Parameters:**
{"question_id"=>"1",
"commit"=>"Add Answer",
"authenticity_token"=>"ttPniOSpgGDMRu7+OJW2eS5rJMV/+ivVNOeI+rWOUPY=",
"utf8"=>"\342\234\223",
"answer"=>{"body"=>"ok!"}}
だから、それはやっていることです質問への回答を追加していますが、何らかの理由でそれを同じ質問ページにリダイレクトしていません。私は同じ質問をリロードするとき、私は追加された新しい答えを見つける。だからなぜこれが起こっているのか、私を助けてもらえますか?私はポストへの回答を追加できるようにする必要があり、答えはリロードせずに表示されるか、上記のエラーを表示する必要があります。ありがとう。
ありがとうございました。それは働いた!! – Maddy
あなたは次のことに注意しましたか?location => @answer ?! – Maddy
これは、私が思い出す限り、同じではない経路を探します – apneadiving