0

属に複数形にする必要がある属モデルが必要です。Ruby 2.2.1 および SQLServer 2014 で Rails 4.2.1 を使用しています。config/initializers/inflections.rb に Inflector を追加しました。

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.irregular 'genus', 'genera'
end

この質問ごとに。Rails コンソールをチェックインしたところ、単数形と複数形が正しく表示されました。

rails generate scaffold Genus name:string

テーブル名は正しくジェネラと呼ばれ、物事は正しいように見えました。

ただし、実際にビューに移動しようとすると、エラーが発生します。インデックス ページ ( http://0.0.0.0:3000/genera ) の場合、genus という名前のテーブルにアクセスしようとすると、データベースからエラーが発生します。

TinyTds::Error: Invalid object name 'genus'.: EXEC sp_executesql N'SELECT [genus].* FROM [genus]'
Extracted source (around line #14):
12
13  <tbody>
14    <% @genera.each do |genus| %>
15      <tr>
16        <td><%= genus.name %></td>
17        <td><%= link_to 'Show', genus %></td>

新しい ( http://0.0.0.0:3000/genera/new ) の場合、パス エラーが発生します。

undefined method `genus_index_path' for #<#<Class:0x007fd9b9604380>:0x007fd993e8a2f0>
Extracted source (around line #1):                 
1 <%= form_for(@genus) do |f| %>
2   <% if @genus.errors.any? %>
3     <div id="error_explanation">
4       <h2><%= pluralize(@genus.errors.count, "error") %> prohibited this genus from being saved:</h2>
5 
6       <ul>

Trace of template inclusion: app/views/genera/new.html.erb

私は明らかに何か間違ったことをしていますが、このようなエラーを検索しても何も見つかりません。そのインフレクターを追加する以外に何かする必要がありますか? 最初はどういうわけか SQLServer のせいだと思っていましたが、新しいビューでのルーティングには影響しませんね。

4

1 に答える 1

0

問題は、Web サーバーを再起動するのを忘れたことであることが判明しました。どうやらインフレクターへの変更は Web サーバーによって検出されませんが、もちろん、コマンド ラインから rails generate を実行するだけで、変更が表示されました。彼らを助けるでしょう。

于 2016-07-27T21:39:29.617 に答える