我的团队中没有方法错误#Show
NoMethodError in my Teams#Show
出于某种原因,我在这一行遇到错误。一切似乎都是正确的。
undefined method `datetime' for #<Game:0x87e73f0>
控制台日志截图:
www.gyazo.com/0947c493218a3fecdb5849e1e13f181a
app/views/games/_form.html.erb 第 4 行提出
<%= f.text_field :datetime %>
迁移文件:
class CreateGames < ActiveRecord::Migration
def change
create_table :games do |t|
t.string :datetime
t.string :location
t.references :team, index: true
t.timestamps null: false
end
end
end
部分形式:
<%= form_for([@team, @team.games.build]) do |f| %>
<p>
<%= f.label :datetime %><br>
<%= f.text_field :datetime %>
</p>
<p>
<%= f.label :location %><br>
<%= f.text_field :location %>
</p>
<br>
<p>
<%= f.submit %>
</p>
<% end %>
路线文件:
Rails.application.routes.draw do
devise_for :users
resources :teams do
resources :members
end
resources :teams do
resources :games
end
root "teams#index"
end
您拼错了列名将日期时间更改为date_time:
<%= form_for([@team, @team.games.build]) do |f| %>
<p>
<%= f.label :date_time %><br>
<%= f.text_field :date_time %>
</p>
<p>
<%= f.label :location %><br>
<%= f.text_field :location %>
</p>
<br>
<p>
<%= f.submit %>
</p>
<% end %>
我不喜欢你将列称为 "datetime" 的想法 - 如果它不受保护,那肯定会产生误导(考虑到大多数 SQL 风格都有一个 datetime
列类型)。
除了显示您调用了错误的列名称之外:
Game.column_names I got: => ["id", "date_time", "location", "team_id", "created_at", "updated_at"]
您需要参考 date_time
:
<%= f.label :date_time %><br>
<%= f.text_field :date_time %>
...您最好更改数据库中属性的名称:
$ rails g migration ChangeDateTime
#db/migrate/change_date_time____.rb
class ChangeDateTime < ActiveRecord::Migration
def change
rename_column :games, :date_time, :start_time
end
end
$ rake db:migrate
这将允许您引用 start_time
,并且不应以任何方式与您的 SQL 安装冲突。
出于某种原因,我在这一行遇到错误。一切似乎都是正确的。
undefined method `datetime' for #<Game:0x87e73f0>
控制台日志截图: www.gyazo.com/0947c493218a3fecdb5849e1e13f181a
app/views/games/_form.html.erb 第 4 行提出
<%= f.text_field :datetime %>
迁移文件:
class CreateGames < ActiveRecord::Migration
def change
create_table :games do |t|
t.string :datetime
t.string :location
t.references :team, index: true
t.timestamps null: false
end
end
end
部分形式:
<%= form_for([@team, @team.games.build]) do |f| %>
<p>
<%= f.label :datetime %><br>
<%= f.text_field :datetime %>
</p>
<p>
<%= f.label :location %><br>
<%= f.text_field :location %>
</p>
<br>
<p>
<%= f.submit %>
</p>
<% end %>
路线文件:
Rails.application.routes.draw do
devise_for :users
resources :teams do
resources :members
end
resources :teams do
resources :games
end
root "teams#index"
end
您拼错了列名将日期时间更改为date_time:
<%= form_for([@team, @team.games.build]) do |f| %>
<p>
<%= f.label :date_time %><br>
<%= f.text_field :date_time %>
</p>
<p>
<%= f.label :location %><br>
<%= f.text_field :location %>
</p>
<br>
<p>
<%= f.submit %>
</p>
<% end %>
我不喜欢你将列称为 "datetime" 的想法 - 如果它不受保护,那肯定会产生误导(考虑到大多数 SQL 风格都有一个 datetime
列类型)。
除了显示您调用了错误的列名称之外:
Game.column_names I got: => ["id", "date_time", "location", "team_id", "created_at", "updated_at"]
您需要参考 date_time
:
<%= f.label :date_time %><br>
<%= f.text_field :date_time %>
...您最好更改数据库中属性的名称:
$ rails g migration ChangeDateTime
#db/migrate/change_date_time____.rb
class ChangeDateTime < ActiveRecord::Migration
def change
rename_column :games, :date_time, :start_time
end
end
$ rake db:migrate
这将允许您引用 start_time
,并且不应以任何方式与您的 SQL 安装冲突。