【发布时间】:2014-07-18 14:39:33
【问题描述】:
更新
Started GET "/classifieds/12/questions/new" for 127.0.0.1 at 2014-07-18 10:55:27 -0400
Processing by QuestionsController#new as HTML
Parameters: {"classified_id"=>"12"}
Classified Load (0.5ms) SELECT "classifieds".* FROM "classifieds" WHERE "classifieds"."id" = $1 LIMIT 1 [["id", "12"]]
Rendered questions/new.html.erb within layouts/application (2.5ms)
Completed 500 Internal Server Error in 35ms
TypeError - can't convert Symbol into Integer:
我有一个belongs_to :classified 的问题模型和一个has_many :questions 的分类模型。
因此这种关系,我在 routes.rb 中做一个嵌套路由
resources :classifieds do
resources :questions
end
由于上述原因,当我执行 rake 路线时,我得到了这些新路线
classified_questions GET /classifieds/:classified_id/questions(.:format) questions#index
POST /classifieds/:classified_id/questions(.:format) questions#create
new_classified_question GET /classifieds/:classified_id/questions/new(.:format) questions#new
edit_classified_question GET /classifieds/:classified_id/questions/:id/edit(.:format) questions#edit
classified_question GET /classifieds/:classified_id/questions/:id(.:format) questions#show
PUT /classifieds/:classified_id/questions/:id(.:format) questions#update
DELETE /classifieds/:classified_id/questions/:id(.:format) questions#destroy
我正在浏览指南中的嵌套资源部分。新问题应该给我一个表格,我可以在其中发布到 questions#create 允许我将问题发布到属于特定分类广告的数据库。
在架构的问题表中,我添加了这个挂钩
t.integer "classifieds_id"
****我没有分类广告控制器。
这是渲染 show 方法的控制器
class UplatzPlacesController < ApplicationController
require 'balanced'
helper_method :countries
def show
@classified=Classified.find(params[:id])
end
end
show.html.erb 将分类广告显示给用户,底部有一个 link_to
<%= link_to "Post a question", new_classified_question_path(@classified.id) %>
我生成了自己的问题控制器
class QuestionsController < ApplicationController
def index
end
def new
@classified = Classified.find(params[:classified_id])
@question = Question.new
end
def create
@classified = Classified.find(params[:classified_id])
@question = Question.new(params[:question])
@classified.questions << @question
if @question.save
flash[:notice] = "Question has been posted"
else
flash[:notice] = "It did not go through"
end
end
end
当我点击 link_to 时,我确实看到了表单,并且 url 变成了这个
classifieds/12/questions/new #shows that id got passed correctly
但是当我点击提交时,我收到了这个路由错误
Routing Error
No route matches [POST] "/classifieds/12/questions/new"
***每个路线确实存在帖子。
这是我在视图/问题中的 new.html.erb
<%=form_for @question, :url => new_classified_question_path do |f| %>
<fieldset>
<ul id='posting_question_form'>
<li>
<%=f.label :question_body, 'Post Your Question To Seller:'%>
<%= f.text_area :question_body, :cols=>40, :rows=>50 %>
</li>
</ul>
</fieldset>
<div>
<%= f.submit "Post Question", :class => 'goButton', :style => 'width:auto;float:right;' %>
</div>
<% end %>
</div>
我确实在问题模型中设置了批量作业的属性
attr_accessible :question_body, :classifieds_id
它应该可以工作,但它不是。
该应用程序也是gem 'rails', '3.2.13'
【问题讨论】:
标签: ruby-on-rails routes