2012-01-17 29 views
5

Tôi đang gặp một chút rắc rối trên biểu mẫu chỉnh sửa của mình. Vì lý do nào đó, trình trợ giúp lựa chọn của tôi không hoạt động đúng trên hành động chỉnh sửa. Dường như bỏ qua vì lý do nào đó tùy chọn: prompt => true và không hiển thị thông báo "Vui lòng chọn". Nhưng chỉ trên hành động chỉnh sửa, hành động mới chỉ hoạt động tốt.tùy chọn: prompt => true from f.select không hoạt động trên chỉnh sửa hành động

đoạn mã từ dạng phần:

f.select :category_id, @categories, {:prompt => true} 

chỉnh sửa hành động

def edit 
    @page = Page.find(params[:id]) 
    @categories = Category.where(:cat_type=>"page").map { |c| [t("category.#{c.slug}",:default=>"#{c.name}"), c.id] } 
    end 

các hành động mới

def new 
    @page = Page.new 
    @categories = Category.where(:cat_type=>"page").map { |c| [t("category.#{c.slug}",:default=>"#{c.name}"), c.id] } 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @page } 
    end 
    end 

Bất kỳ ý tưởng?

Trả lời

12
f.select :category_id, @categories, :include_blank => "whatever your prompt says" 

Tác phẩm này dành cho tôi.

Tuy nhiên, tôi thường cố gắng tránh thực hiện lời nhắc với những người trợ giúp đường ray vì họ dường như không bao giờ cư xử đúng.

Ngoài ra, tôi đã thực hiện nó theo cách này:

f.select :category_id, @categories.unshift(["whatever your prompt says", value]) 

mà pushs mảng vào phía trước của @categories bạn mảng

+0

tốt đẹp nhất, nó sẽ đưa tôi một thời gian dài để tìm ra giải pháp đầu tiên! – Jason

2

Từ Apidock:

select(object, method, choices, options = {}, html_options = {}) 

Vì vậy, đây sẽ công việc:

f.select :category_id, options_from_collection_for_select(@categories, :id, :name), {prompt: 'Please select ...' }, { class: 'form-control' } 
0

chọn tùy chọn cho hình thức cho phương pháp với dấu nhắc lớp giá trị và html lựa chọn:

f.select(:subcription_with, options_for_select(['paypal', 'stripe']), {:prompt => 'Select Payment Method'}, {:class => "form-control slct-box"}) 

enter image description here

1

Nó hoạt động như mong đợi. Nó không hiển thị lời nhắc nếu một giá trị được chọn và được lưu trước đó.

Nhắc so với Chọn - "Sự khác biệt chính là nếu lựa chọn đã có giá trị, thì: lời nhắc sẽ không hiển thị trong khi: luôn luôn bao gồm: include_blank."

Tham khảo this API note.

Các vấn đề liên quan