1

我正在用 Ruby on Rails 作为学校项目制作游戏,但现在我遇到了这个错误:

#<#:0x007ff34cca8f68> 的未定义方法“storylines_index_path”

我正在制作一个页面,您希望有一个表格来添加故事情节,所以我需要一个包含一些字段的表格。我想使用 form_for 方法。但是当添加我得到这个错误

这是我的代码:

意见/new.html.erb

<% provide(:title, 'Overzicht Storylines') %> 
<h1>Voeg nieuwe storyline toe</h1>
<%= form_for(@storyline) do |f| %>
  <%= render 'shared/error_messages' %>

  <%= f.label :title %>
  <%= f.text_field :title%>

  <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>

<% end %>

storylines_controller.rb

class StorylinesController < ApplicationController   def index
  @storylines = Storylines.find(:all)   end

  def show
    @storyline = Storylines.find(params[:id])   
  end

  def new
    @storyline = Storylines.new   end end

故事情节.rb

class Storylines < ActiveRecord::Base   
  attr_accessible :title, :text
end

路线.rb

StoryLine::Application.routes.draw do   
  get "users/new"   
  get "storylines/new"

  resources :users
  resources :storylines
  resources :sessions, only: [:new, :create, :destroy]

  match '/signup',  to: 'users#new'
  match '/signin',  to: 'sessions#new'
  match '/signout', to: 'sessions#destroy', via: :delete

  root to: 'static_pages#home'

  match '/help',    to: 'static_pages#help'
  match '/contact', to: 'static_pages#contact'
  match '/about', to: 'static_pages#contact'
  match '/home', to: 'static_pages#home'

end
4

2 回答 2

3

Rails 约定要求您以单数形式命名模型,即Storyline不是Storylines. 在类定义中重命名模型名称,控制器应该可以解决这个问题。

于 2012-12-15T11:20:00.110 回答
0

当你这样做

form_for(@storyline)

它将尝试查找storylines_index_path,以便在您的数据库中创建一个 Storyline 对象。

因此,您需要在config/routes.rb文件中定义路由,如果您已经定义了应该定义路由的资源 :storylines,如果您不想创建 REST 资源,则可以创建自己的路由

match 'storylines/create', to: 'storylines#create', as: :storylines_create

然后在视图上

我建议阅读Rails 路由指南,因为它更好地解释了 Rails 上与路由相关的所有内容

于 2012-12-15T11:03:35.590 回答