在Rails 4中有一个duvid,因为创建了一个名为“get_json”的自定义Action
def get_json
@step_recipes = StepRecipe.all
respond_to do |format|
format.json render: @step_recipes
end
end
并将其添加到路线:
get "step_recipes/get_json" => "step_recipes#get_json"
问题在于Rails 4中的回调,因为我尝试打开此路由并收到错误Couldn't find StepRecipe with id=get_json
,并且拥有:
Parameters:
{"id"=>"get_json"}
我现在想要如何在控制器中忽略这个方法set_x,如何创建自定义操作并且没有问题呢?非常感谢。
答案 0 :(得分:1)
如果你查看你的routes.rb文件,你可能会在你为get_json添加的自定义路线之上的某个地方有这样的条目:
resources :step_recipes
除此之外,还增加了一条等同于此的路线:
get "step_recipes/:id" => "step_recipes#show"
由于该路线首先与您的网址匹配,因此在您有可能到达get_json
行之前,它会将请求路由到#show
操作,并将:id
参数设置为相等get_json
。
您需要将路线重命名为其他内容以避免冲突。试试这个:
get "get_json/step_recipes" => "step_recipes#get_json"
您需要确保在添加自定义路由时,您不会与已存在的任何其他路由匹配。