참고 : 원래이 질문을했을 때 나는 생각지 않을 것입니다. 허용 된 대답은 내가 준 예제에 맞습니다. 즉, :value
을 text_field로 전달할 수는 있지만 실제로는 date_select
의 문제가 발생했습니다.이 문제에는 값 세트를 재정의 할 수있는 기능이 없습니다.양식 필드 값을 레일 양식으로 덮어 씌우십시오.
결과적으로 레일스에서이 파일이 업데이트되어 :selected => a_date
을 설정하면 예상대로 작동합니다. 이것은 레일 4에 있습니다.
부모 모델로부터 그 값을 상속받을 수있는 모델이 있습니다. 그것은이 같은 작업 : 다음 사용자를 편집하는 양식을
class User < ActiveRecord::Base
attr_accessible :field_name
belongs_to :company
def field_name
if self['field_name'].nil?
company['field_name']
else
self['field_name']
end
end
end
class Company < ActiveRecord::Base
attr_accessible :field_name
end
을하지만, 사용자 값이 nil이 경우 물론, 그것은 내가 무엇을하지 않은, 회사의 값으로 양식을 채 웁니다 필요.
사용자 필드 값이 nil이면 값이 비어 있도록 양식 필드의 값을 무시하고 싶습니다.
<%= form_for @user do |f| %>
<%= f.text_field :field_name, @user['field_name'] %>
<% end %>
그러나 그것은 작동하지 않습니다, 재정의 값을 제공하는 메커니즘없는 것 : 1
시도가 이상적으로 내가 할 수있을 것입니다.
2 그래서 내가 두 번째 게터/세터를 만드는 방법에 대해 생각 시도 :
def field_name_uninherited
self['field_name']
end
def field_name_uninherited=(value)
self['field_name']=value
end
지금은 <%= f.text_field :field_name_uninherited %>
를 사용하고 예상대로 작동 - 위대한! field_name
가 멀티 파라미터 속성을 사용하여 날짜 또는 다른 유형을 때,이 오류가 발생 : 그것은 추론으로
1 error(s) on assignment of multiparameter attributes
I, 그것은이 날짜 필드 것을 알고하지 않기 때문에이 믿고 제외 데이터베이스에서이 필드 (_uninherited 접 L 어가있는)는 데이터베이스에 없습니다.
그래서 원래의 데이터베이스 필드와 동일한 유형으로 내 추가 방법을 표시하는 방법이 필요합니다. (FIELD_NAME 사용)
또 주, 상기 예는 간략화 된 버전이다. 나는 실제로 상속을 처리하기 위해 https://github.com/colinbm/inherits_values_from을 사용하고 있지만 이것이 중요한 것은 아니라고 생각합니다.
분명히 동일한 목표를 달성하는 더 좋은 방법이 있다면 나는 모두 귀입니다.
나는 digitalWestie의 해결책이 여기에있는 길이라고 생각한다. 그러나 Attempt 2의 경우 나는 데이터베이스 백업이 아닌 '입력 된'속성을 갖게 해주는 오래된 보석을 썼다. 그리고 나는 누군가가 그것을 Rails 3 (https://github.com/daemon/virtual_attributes)에 이식했다는 사실을 알아 냈다.) 한 번 볼 가치가있을 수 있습니다. – latentflip
n.b. 단지 2 살인 것을 발견 했으므로 실제로 사용하고 싶지는 않을 수도 있지만 어쨌든 관심이있을 수 있습니다. – latentflip
아, 그래, 그런 식으로 그렇게하는 방법처럼 보이지만, 만약 내가 그것을 간단하게 유지할 수 있다면! 지금 당장 date_selects에서 그 작업을하는 것에 매달 렸습니다. (그래서 내가 가치라고 생각한 이유입니다 : – Colin