Spe*_*ire 2 ruby ruby-on-rails
这个错误不止一次地蔓延开来,我似乎无法指出它。错误日志:
undefined method `medium_path' for #<#<Class:0x0000010687a788>:0x00000101d62d90>
Extracted source (around line #3):
Run Code Online (Sandbox Code Playgroud)
媒体控制器。
class MediaController < ApplicationController
def index
@medias = Media.all
end
def show
@media = Media.find(params[:id])
end
def edit
@media = Media.find(params[:id])
end
end
Run Code Online (Sandbox Code Playgroud)
edit.html.erb。
<h1>Editing <%= @media.title %></h1>
<%= form_for(@media) do |f| %>
<p>
<%= f.label :title %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
routes.rb
Mediastuff::Application.routes.draw do
root "media#index"
get "media" => "media#index"
get "media/:id" => "media#show", as: "show_media"
get "media/:id/edit" => "media#edit", as: "edit_media"
end
Run Code Online (Sandbox Code Playgroud)
我相信您的form_for声明会产生错误。除了您已有的功能外config/routes.rb,您可能还想添加一个update行动路线,因为这form_for(@media)将是一项更新。
将以下内容添加到您的config/routes.rb:
put "media/:id/update" => "media#update"
Run Code Online (Sandbox Code Playgroud)
还要确保在中定义update操作MediaController。
另一种选择是使用resources在config/routes.rb作为替换对所有的media/...你有路线:
Mediastuff::Application.routes.draw do
root "media#index"
resources :media
end
Run Code Online (Sandbox Code Playgroud)
并查看可使用的路径/ URL帮助程序,请rake routes从终端运行。