2013-07-18 26 views
22

Mặc dù mã có vẻ đúng, khi tôi cố gắng gửi biểu mẫu, các giá trị của nhiều lựa chọn không được gửi.Nhiều vấn đề được chọn với mối quan hệ HABTM bằng cách sử dụng Rails 4

Nếu tôi chỉ xóa tùy chọn nhiều, mọi thứ hoạt động như dự kiến ​​chỉ xem xét một giá trị, nhưng điều quan trọng là lưu nhiều hơn một thẻ cho mỗi giao dịch.

Mẫu

Transaction.rb

class Transaction < ActiveRecord::Base 
    has_and_belongs_to_many :tags 

Tag.rb

class tag < ActiveRecord::Base 
    has_and_belongs_to_many :transactions 

Xem

<%= form.collection_select :tag_ids, @tags, :id, :name, {}, 
    {:multiple => true} %> 

Kết quả:

<select id="transaction_tag_ids" multiple="multiple" name="transaction[tag_ids][]"> 
    <option value="1">..</option> 
</select> 

Trả lời

39

Hãy chắc chắn những gì bạn đúng cách cho phép params nhận chuyển nhượng khối lượng.

Bạn nói rằng một trong những param hoạt động, vì vậy tôi giả định những gì bạn có ở đâu đó trong một cái gì đó điều khiển của bạn như:

params.require(:transaction).permit(:name, :tag_ids) 

Vì vậy, bạn cần cho phép để nhận được một mảng:

params.require(:transaction).permit(:name, :tag_ids => []) 
+0

cảm ơn! Đó là chính xác những gì tôi đã mất tích. –

0

tôi giải quyết vấn đề của tôi khi sử dụng

{:health_unit_ids => []} 

Rails 4 không chấp nhận mà không có {}