прямо сейчас я создаю форму, которая принимает многие ко многим, используя множественный выбор. после создания формы я пытаюсь отобразить информацию, собранную на странице SHOW, однако я не знаю, как отобразить эти данные во встроенном ruby. модель соединения - CardTypesList
Модели
class Card < ActiveRecord::Base
self.inheritance_column = nil
validates :name, presence: true, uniqueness: {case_sensitive: false}
has_many :card_type_lists
has_many :card_types, through: :card_type_lists
accepts_nested_attributes_for :card_type_lists
end
class CardType < ActiveRecord::Base
has_many :card_type_lists
has_many :cards, through: :card_type_lists
end
class CardTypeList < ActiveRecord::Base
belongs_to :cards
belongs_to :card_types
accepts_nested_attributes_for :card_type
end
НОВАЯ форма с использованием выбора
<%= f.label :types %>
<%= f.select :card_type_ids, CardTypes.all.collect{|x| [x.name, x.name]}, {},{:title => "Select a Type", :multiple => true, :class => 'selList'} %>
Встроенные рубиновые испытания
<td class="card-td"><%= @card.card_types %></td>
Ожидается: ["Тип 1", "Тип2"] это отображает страницу, но дает (в тексте):
<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_CardTypes:0x00000102f58a18>
РЕДАКТИРОВАТЬ: добавлена схема.
ActiveRecord::Schema.define(version: 20140120042152) do
create_table "card_type_lists", force: true do |t|
t.integer "card_type_id"
t.integer "card_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "card_types", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "cards", force: true do |t|
t.string "name"
t.string "set"
t.string "card_types"
t.string "colors"
t.string "cost"
t.string "rarity"
t.string "oracle"
t.float "value"
t.integer "number_owned"
t.string "notes"
t.string "img_link"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "types_mask"
end
add_index "cards", ["name"], name: "index_cards_on_name", unique: true
end
и это мой контроллер:
class CardsController < ApplicationController
def new
@card = Card.new
@card.card_type_lists.build.build_card_type
end
def show
@card = Card.find(params[:id])
end
def create
@card = Card.new(card_params)
if @card.save
redirect_to @card
else
render 'new'
end
end
private
def card_params
params.require(:card).permit(:name, :set, {:card_types => []}, :color, :cost, :rarity,:oracle,:value, :number_owned,:notes)
end
end