2010-12-27 36 views
5

Tôi mới dùng Ruby và Ruby on Rails. Tôi đang cố gắng tìm một cách để có được id được sử dụng trên một lĩnh vực đầu vào được tạo ra bởi helper hidden_field bởi vì tôi cần phải thêm một số javascript trong đó sử dụng jquery để có được các lĩnh vực đầu vào của id.Ruby Rails: truy xuất id của trường nhập biểu mẫu

Tôi có hai kiểu> Người và địa chỉ. Người có địa chỉ và địa chỉ có thuộc tính zip_code.

Tôi đang sử dụng đoạn mã sau để tạo ra một hình thức với các lĩnh vực ẩn:

<%= form.fields_for :address do |form| %> 

    <%= form.hidden_field :zip_code %> 

<% end %> 

này tạo ra html sau:

<input class="text" id="person_address_attributes_zip_code" name="person[address_attributes][zip_code]" type="hidden" /> 

Có bất kỳ phương pháp hoặc helper mà mang lại cho tôi id được sử dụng cho trường của thuộc tính đã cho? Ví dụ, tôi cần phải biết rằng đối với: zip_code id được tạo ra là "person_address_attributes_zip_code".

Rất cám ơn trước. Bruno

Trả lời

1

Cách đơn giản nhất sẽ là để buộc các id được bất cứ điều gì bạn muốn, ví dụ:

<%= form.hidden_field :zip_code, :id => 'zip_code' %> 

Trường tên được sử dụng trong các thông số yêu cầu vì vậy nó không có vấn đề gì các trường id được đặt thành.

Phương pháp xác định id trong Rails 3 nằm trong actionpack/lib/action_view/helpers/form_helper.rb, chủ yếu trong mô-đun InstanceTag. Hầu hết là các biến thể trên tên model chính được khử trùng để loại bỏ các ký tự đặc biệt, theo sau là dấu gạch dưới theo sau là tên trường được khử trùng, nhưng các mô hình lồng nhau và các thuộc tính bổ sung thêm độ phức tạp.

+0

Cảm ơn, tôi đồng ý rằng cách bạn đề xuất dễ dàng hơn nhiều. – Bruno

+3

là có một phương pháp trợ giúp mà thực sự có thể được sử dụng để có được các id được tạo ra? thay vì phải đặt id riêng lẻ? – freethinker

5

Trình tạo biểu mẫu có quyền truy cập vào tên đối tượng mà bạn có thể sử dụng để lấy id được tạo, cho biết bạn biết tên trường. Tôi đã thử nghiệm điều này trong Rails 3:

<%= form.fields_for :addresses do |form|%> 
    <%= "#{form.object_name}[zip_code]".gsub(/(\])?\[/, "_").chop %> 
    <%= form.text_field :zip_code %> 
<% end %> 
Các vấn đề liên quan