Rails编辑路线

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)

vee*_*vee 5

我相信您的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

另一种选择是使用resourcesconfig/routes.rb作为替换对所有的media/...你有路线:

Mediastuff::Application.routes.draw do
  root "media#index" 
  resources :media
end
Run Code Online (Sandbox Code Playgroud)

并查看可使用的路径/ URL帮助程序,请rake routes从终端运行。