为什么我会在保存重复的Ruby on Rails模型时遇到500错误(未定义的方法’to_model’

我是铁杆新手,但在某些事情上仍然模糊不清

我发送json post请求到/microposts/10/duplicate.json复制微博。

路线转到微博#duplicate

Controller的行动是:

def duplicate micropost = current_user.microposts.find(params[:id]) new_micropost = micropost.dup respond_with new_micropost.save end 

请求的服务器日志是:

 Started POST "/microposts/15/duplicate.json" for 180.181.247.76 at 2015-09-06 11:00:38 +0000 Processing by MicropostsController#duplicate as JSON Parameters: {"_json"=>15, "id"=>"15", "micropost"=>{}} User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 2]] Micropost Load (0.3ms) SELECT "microposts".* FROM "microposts" WHERE "microposts"."user_id" = ? AND "microposts"."id" = ? ORDER BY "microposts"."created_at" DESC LIMIT 1 [["user_id", 2], ["id", 15]] (0.1ms) begin transaction SQL (0.4ms) INSERT INTO "microposts" ("content", "user_id", "title", "link", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?) [["content", "RLCPYIIG"], ["user_id", 2], ["title", "herp"], ["link", "snerp"], ["created_at", "2015-09-06 11:00:38.576553"], ["updated_at", "2015-09-06 11:00:38.576553"]] (11.7ms) commit transaction Completed 500 Internal Server Error in 28ms (ActiveRecord: 12.8ms) NoMethodError (undefined method `to_model' for true:TrueClass): app/controllers/microposts_controller.rb:23:in `duplicate' 

所以微博被保存但我不知道为什么我会得到500错误。 另外,我应该在这里使用.require和.permit吗? 来自前端的params中唯一的东西应该是id。

任何帮助,将不胜感激。

弄清楚了。 我应该在这里使用PUT而不是POST。

我最近在使用respond_with时遇到了类似的错误。

原来我在请求HTML响应时错过了我的操作的相应视图。

不幸的是,错误是相当神秘的……

 undefined method `to_model' for # Did you mean? to_xml 

TLDR: 检查您是否有相应的视图。

希望这有助于某人。