ruby-on-rails - rails中类属性的未定义方法错误

标签 ruby-on-rails ruby ruby-on-rails-3

您好,我是 Ruby on Rails 的新手,所以如果问题有点愚蠢,请原谅我。

我目前正在遵循指南 here .(它是用繁体中文写的)。

在那一章中,作者正在谈论设置资源的状态。

首先,它编辑了 app/model/event.rb 文件

def closed?
  self.status == "CLOSED"
end

def open?
  !self.closed?
end

def open!
  self.status = "OPEN"
  self.save!
end

def close!
  self.status = "CLOSED"
  self.save!
end

然后是 config/routes.rb 文件。

resources :events do
    resource :state, :controller => 'event_states'
    # ...
end

然后是 app/view/events/show.html.erb 文件并插入以下代码。

<p>Status: <%= @event.status %></p>

<p>
<% if @event.closed? %>
    <%= link_to '[Open]', event_state_path(@event ), :method => :post %>
<% else %>
    <%= link_to '[Close]', event_state_path(@event), :method => :delete %>
 <% end %>
</p>

我知道它试图通过 POST 和 DELETE http 请求切换事件的状态,但我在显示页面上收到“NoMethod”错误。这是可以理解的(?),因为“事件”类中没有这样的变量。

undefined method `status' for #<Event:0x007f5e59b3b988>

  <% end %>
</p>
<p>Status : <%= @event.status %></p>

<p>
<% if @event.closed? %>

对这个问题有什么想法吗? (如果您需要其他信息,请告诉我)

最佳答案

我猜你可能错过了上一章https://ihower.tw/rails4/basic.html

在页面的四分之一处,它添加了一个迁移以将 status 属性添加到 event 模型。通过

rails g migration add_status_to_events

并进行了一些迁移。

如果您不熟悉迁移,我强烈建议您查看 http://guides.rubyonrails.org/active_record_migrations.html 上的迁移

关于ruby-on-rails - rails中类属性的未定义方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29608419/

相关文章:

ruby-on-rails - Rails 路由顶层路由和信息架构

ruby-on-rails - Rails 未定义方法 `id'

ruby-on-rails - 是否需要“bundler/setup”与运行 Bundler.setup 相同?

sql - rails 包含不同的值

ruby-on-rails - 如何计算 Rails 中更新列的到期时间

ruby-on-rails - 更新所有匹配某些条件但在数据库表列中保留 "position-indexed"值的记录

css - 为不同客户定制的 Rails 应用程序

ruby-on-rails - 删除链接停止工作数据方法 ='delete' 但转到显示页面

javascript - Rails `link_to` 方法多次发布

ruby-on-rails - rails 5, "nil is not a valid asset source"