2014-02-20 2 views
0

У меня есть приложение, которое позволяет пользователю загрузить объявление и назначить его на несколько недельMultiSelect Не Передача нескольких значений

Неделя Модель

class Week < ActiveRecord::Base 

    has_many :creative_weeks 
    has_many :creatives, :through => :creative_weeks 

    end 

Творческая модель

class Creative < ActiveRecord::Base 

    has_many :creative_weeks 
    has_many :weeks, :through => :creative_weeks 

    mount_uploader :image, CreativeUploader 

end 

Creative Weeks [Join Table]

class CreativeWeek < ActiveRecord::Base 
    belongs_to :week 
    belongs_to :creative 
    end 

Я знаю, что ассоциация работает, которая позволяет мне выдавать объявление в несколько недель на основе моей консоли:

2.0.0p353 :020 > c = Creative.first 
    Creative Load (0.2ms) SELECT "creatives".* FROM "creatives" ORDER BY "creatives"."id" ASC LIMIT 1 
    => #<Creative id: 10, name: "", account_id: 1, week_id: nil, campaign_id: 1, image:  "Quakes_2013_DigiOOH_40YR_704x496.jpg", created_at: "2014-02-20 18:13:47", u 
    pdated_at: "2014-02-20 18:13:47"> 
2.0.0p353 :021 > c.week_ids 
    (0.2ms) SELECT "weeks".id FROM "weeks" INNER JOIN "creative_weeks" ON "weeks"."id" = "creative_weeks"."week_id" WHERE "creative_weeks"."creative_id" = ? [[" 
    creative_id", 10]] 
    => [3] 
2.0.0p353 :022 > c.week_ids = [1, 2, 3] 
    Week Load (0.2ms) SELECT "weeks".* FROM "weeks" WHERE "weeks"."id" IN (1, 2, 3) 
    Week Load (0.1ms) SELECT "weeks".* FROM "weeks" INNER JOIN "creative_weeks" ON "weeks"."id" = "creative_weeks"."week_id" WHERE "creative_weeks"."creative_id" 
    = ? [["creative_id", 10]] 
(0.1ms) begin transaction 
SQL (0.3ms) INSERT INTO "creative_weeks" ("created_at", "creative_id", "updated_at", "week_id") VALUES (?, ?, ?, ?) [["created_at", Thu, 20 Feb 2014 18:20:27 
UTC +00:00], ["creative_id", 10], ["updated_at", Thu, 20 Feb 2014 18:20:27 UTC +00:00], ["week_id", 1]] 
SQL (0.1ms) INSERT INTO "creative_weeks" ("created_at", "creative_id", "updated_at", "week_id") VALUES (?, ?, ?, ?) [["created_at", Thu, 20 Feb 2014 18:20:27 
UTC +00:00], ["creative_id", 10], ["updated_at", Thu, 20 Feb 2014 18:20:27 UTC +00:00], ["week_id", 2]] 
(1.0ms) commit transaction 
    => [1, 2, 3] 
2.0.0p353 :023 > 

Проблема, которую я имею получаю такую ​​же функциональность для работы на передней панели конец. Он будет проходить только в одном значении, как правило, последний из которых выбран

В моей форме:

<div class="field"> 
<%= f.collection_select(:week_ids, Week.all, :id, :start_at, {}, multiple: true, name: 'creative[week_ids]') %> 
</div> 

Может кто-нибудь посоветовать мне, что мне не хватает?

ТИА

ответ

1

Изменить имя Выбрать, тега к этому:

name: 'creative[week_ids][]' 

Это дополнительный «[]» в конце имени указывает, что вы хотите, массив значений, которые будут опубликованы.

Используя сильные параметры, которые вы должны указать, что значение будет массивом:

def your_strong_params 
    params.require(:creative).permit(week_ids: []) 
end 
+0

К сожалению, я пробовал. Когда я добавлю дополнительный кронштейн, он не позволит опубликовать какую-либо запись. Я использую Rails 4 и в настоящее время имеет: week_ids в разделе разрешения. Как вы думаете, мне нужно сделать что-то еще, чтобы позволить массиву пройти? – RubyNewbie

+0

Добавил это к ответу. – DiegoSalazar

+0

Пятно на! Знал, что это было чем-то, что блокировало подачу нескольких записей. Благодаря! – RubyNewbie

Смежные вопросы