我正在用西班牙语制作一个包含所有模型名称的应用程序。我有一些与单一化有关的奇怪问题。 我的模特:
class Artista < ActiveRecord::Base
attr_accessible :fecha, :foto, :instrumento, :nombre
end
我的模特名字是“artista”(艺术家)的单数。
控制器:
class ArtistasController < ApplicationController
# GET /bandas
# GET /bandas.json
def index
@artistas = Artista.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @artistas }
end
end
def show
@artista = Artista.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @artista }
end
end
def new
@artista = Artista.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @artista }
end
end
def edit
@artista = Artista.find(params[:id])
end
def create
@artista = Artista.new(params[:artista])
respond_to do |format|
if @artista.save
format.html { redirect_to @artista, notice: 'Artista was successfully created.' }
format.json { render json: @artista, status: :created, location: @artista }
else
format.html { render action: "new" }
format.json { render json: @artista.errors, status: :unprocessable_entity }
end
end
end
def update
@artista = Artista.find(params[:id])
respond_to do |format|
if @artista.update_attributes(params[:banda])
format.html { redirect_to @artista, notice: 'Artista was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @artista.errors, status: :unprocessable_entity }
end
end
end
def destroy
@artista = Artista.find(params[:id])
@artista.destroy
respond_to do |format|
format.html { redirect_to artistas_url }
format.json { head :no_content }
end
end
end
(所有这些都是使用rails generate命令自动创建的)
现在,我的路线包括以下内容:
resources :artistas
当我访问localhost:3000/artistas
时,一切都很有效。我可以看到已经创建的aritst列表。现在,当我点击一个现有的艺术家时(或者在我尝试创建一个新艺术家之后,被重定向到显示艺术家页面)出于某种奇怪的原因,它会转到http://localhost:3000/artistum.3
(3是我点击的艺术家的ID上)。该网址的输出是一个完全空白的页面。
我甚至从未输入artum这个词。我不知道从哪里得到它。此外,它有一个点而不是斜杠来将名称与id分开,所以我不知道如何重定向它。
我对包含所有内容的文件夹进行了grep搜索,而artum这个词只存在于日志文件中。
我的猜测是,我的应用程序的某些部分认为“artista”是复数,“artistum”是它的单数形式。
我添加到我的路线match '/artistum' => 'artistas#index'
,这适用于索引页面,但是点让我对如何为节目页面这样做感到困惑。
有人可以帮助我吗A)找出它为什么要到达那里或b)如何从这些节目页面路由? 谢谢!
答案 0 :(得分:2)
你可以试试这个:
将其添加到inflections.rb
文件夹中的config/initializers
:
ActiveSupport::Inflector.inflections do |inflect|
inflect.plural 'artista', 'artistas'
inflect.irregular 'artista', 'artistas'
end