[ruby-on-rails] 누군가가 collection_select를 명확하고 간단한 용어로 설명 할 수 있습니까?

Rails API 문서를 살펴보고 신기합니다 collection_select.

제목은 다음과 같습니다.

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

그리고 이것이 그들이 제공하는 유일한 샘플 코드입니다 :

collection_select(:post, :author_id, Author.all, :id, :name_with_initial, :prompt => true)

누군가 간단한 연결 ( Userhas_many Plans및 a에 Plan속함 User)을 사용하여 구문에서 사용하고 싶은 이유와 이유를 설명 할 수 있습니까?

편집 1 : 또한 form_helper일반 양식이나 내부 양식이 어떻게 작동하는지 설명하면 멋질 것 입니다. 웹 개발을 이해하지만 Rails의 ‘상대적으로 새로운’웹 개발자에게 이것을 설명한다고 상상해보십시오. 어떻게 설명하겠습니까?



답변

collection_select(
    :post, # field namespace 
    :author_id, # field name
    # result of these two params will be: <select name="post[author_id]">...

    # then you should specify some collection or array of rows.
    # It can be Author.where(..).order(..) or something like that. 
    # In your example it is:
    Author.all,

    # then you should specify methods for generating options
    :id, # this is name of method that will be called for every row, result will be set as key
    :name_with_initial, # this is name of method that will be called for every row, result will be set as value

    # as a result, every option will be generated by the following rule: 
    # <option value=#{author.id}>#{author.name_with_initial}</option>
    # 'author' is an element in the collection or array

    :prompt => true # then you can specify some params. You can find them in the docs.
)

또는 예제는 다음 코드로 표현할 수 있습니다.

<select name="post[author_id]">
    <% Author.all.each do |author| %>
        <option value="<%= author.id %>"><%= author.name_with_initial %></option>
    <% end %>
</select>

이것은에 문서화되어 있지 FormBuilder않지만FormOptionsHelper


답변

나는 select 태그의 순열에 꽤 많은 시간을 보냈다.

collection_select객체 컬렉션에서 select 태그를 작성합니다. 이것을 명심하고

object: 객체의 이름입니다. 태그 이름을 생성하는 데 사용되며 선택한 값을 생성하는 데 사용됩니다. 실제 객체이거나 심볼 일 수 있습니다. 후자의 경우 해당 이름의 인스턴스 변수 는 바인딩에서 찾을 수 있습니다ActionController (즉, 컨트롤러에서 :post호출 @post된 인스턴스 var를 찾습니다 ).

method: 메소드 이름. 태그의 이름을 생성하는 데 사용됩니다. 즉, 선택에서 가져 오려는 객체의 속성

collection : 객체 모음

value_method : 콜렉션의 각 오브젝트에 대해이 메소드는 값에 사용됩니다.

text_method : 컬렉션의 각 개체에 대해이 방법은 텍스트를 표시하는 데 사용됩니다

선택적 매개 변수 :

options: 전달할 수있는 옵션. 여기 에는 옵션 제목 아래에 설명되어 있습니다 .

html_options: 여기에 전달 된 것은 생성 된 html 태그에 추가됩니다. 클래스, id 또는 다른 속성을 제공하려면 여기로 이동하십시오.

협회는 다음과 같이 작성할 수 있습니다.

collection_select(:user, :plan_ids, Plan.all, :id, :name, {:prompt => true, :multiple=>true })

예를 들어 form_for에 포함 된 모든 태그에 대해 다시 매우 간단한 용어 로을 사용하는 것과 관련하여 form_for. f.text_field첫 번째 ( object) 매개 변수 를 제공 할 필요는 없습니다 . 이것은 form_for구문 에서 가져옵니다 .


답변