【问题标题】:How to display values that belong _to an object in rails如何在rails中显示属于对象的值
【发布时间】:2017-08-20 03:56:44
【问题描述】:

我正在通过开发一个乐队应用程序来练习 rails,其中场地有许多活动和乐队,并且这些活动和乐队属于场地。

我设置了外键,我只是对如何在 Events index.html.erb 中显示场地控制器的属性有点困惑

我想显示我的活动属于哪个特定场地,反之亦然。

这是我的事件控制器

 class EventsController < ApplicationController
    def index 
        @events = Event.all
        #should I store my venues in the index to show its values?
        @venues = Venue.where(params[:id])
    end

    def edit 
        @events = Event.find(params[:id])
        puts @events.inspect
    end

    def update 
        @events = Event.find(params[:id])
        @events.update_attributes(name: params[:event][:name], date: params[:event][:date], alcohol_served: params[:event][:alcohol_served], venue_id: params[:event][:venue_id], band_id: params[:event][:band_id])
        redirect_to action: 'index'
    end

    def destroy
        @events=Event.find(params[:id])
        @events.destroy
        redirect_to action: 'index'
    end

    def new 
        @Events = Event.new
    end

    def create
        @Events = Event.create(name: params[:event][:name], date: params[:event][:date], alcohol_served: params[:event][:alcohol_served], venue_id: params[:event][:venue_id], band_id: params[:event][:band_id])
        @Events.save
        redirect_to action: 'index'
    end


end

忽略我的一些重定向,它们仅用于测试目的

这是我的模型

class Venue < ApplicationRecord
    has_many :events
    has_many :bands, through: :events
end

class Event < ApplicationRecord
    belongs_to :venue
    belongs_to :band 
end

class Band < ApplicationRecord
    has_many :events
end

【问题讨论】:

  • 您能分享一下您的活动、乐队和场地模型吗?
  • @StephanePaquet 我添加了它们。谢谢

标签: ruby-on-rails sqlite


【解决方案1】:

如果您有场地并想了解在该场地举办的所有活动:@events = Event.find_by(:venue_id venue.id)

如果你有活动想找场地

venue_id = Event.select(:venue_id).find(params[:id])
@venue = Venue.find(venue_id)

您可以根据用例将params[:id] 替换为event.id

【讨论】:

  • 那会在控制器的def索引中吗?我不知道我能做到这一点,谢谢!
  • 在控制器中是。 ActionRecord 为您的数据库提供了一个抽象层。在这种情况下,场地有许多活动的事实意味着在活动迁移中,您有一个指向场地的 id,按照惯例,这是场地_id
  • 如果我在我的乐队控制器中并想要显示事件,这会是同样的情况吗?
  • 应该的。您还可以添加 nested_attributes 以创建更“用户友好”的关系,有关此内容的更多信息,请参阅 Rails 用户指南。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 2022-10-15
相关资源
最近更新 更多