2014-12-15 4 views
1
나는이 질문에 ledermann rails-settings에 대한 양식을 만들고 싶어

: Creating form for rails-setting,이 솔루션입니다,하지만 그것은 단지 current_user.settings와 함께 작동합니다 (: 이메일), 그리고 난 다른 사용자 환경 설정을 또한 : current_user.settings (: 세부 사항)current_user.settings (: preferences).form_for와 ledermann 레일 - 설정

어떻게 변경할 수 있습니까? rails_settings_setting_object 정확한 설정 이름으로 변경 하시겠습니까? 지금이 :

<%= form_for(resource, as: resource_name, url: edit_registration_path(resource_name), html: { method: :put }) do |form| %> 
<%= f.fields_for current_user.settings(:detail) do |fields| %> 
    <%= fields.label :phone, 'Phone' %> 
    <%= fields.text_field :phone %> 
    <%= fields.label :website, 'Website' %> 
    <%= fields.url_field :website %> 
<% end %> 
<%= f.submit "Save" %> 
<% end %> 

<%= form_for(resource, as: resource_name, url: edit_registration_path(resource_name), html: { method: :put }) do |form| %> 
<%= f.fields_for current_user.settings(:preference), do |fields| %> 
    <%= fields.label :color, 'Color' %> 
    <%= fields.text_field :color %> 
<% end %> 
<%= f.submit "Save" %> 
<% end %> 

그것은 올바른 정보와 (내가 기본값으로 설정) 설정을 반환,하지만 난 컨트롤러로 전송하는 방법을 모른다, 또한 입력 이름은 동일

<form accept-charset="UTF-8" action="/account/settings" id="edit_user" method="post"> 
<div>...</div> 
<label for="settings_detail_phone">Phone</label> 
<input id="settings_detail_phone" name="settings[detail][phone]" type="text" value="55564333" /> 
<label for="settings_detail_website">Website</label> 
<input id="settings_detail_website" name="settings[detail][website]" type="text" value="github.com" /> 
<input name="commit" type="submit" value="Save" /> 
</form> 

<form accept-charset="UTF-8" action="/account/settings" id="edit_user" method="post"> 
<div>...</div> 
<label for="settings_preference_color">Color</label> 
<input id="settings_preference_color" name="settings[preference][color]" type="text" value="Green" /> 
<input name="commit" type="submit" value="Save" /> 
</form> 
:

<form accept-charset="UTF-8" action="/account/settings" id="edit_user" method="post"> 
<div>...</div> 
<label for="user_rails_settings_setting_object_phone">Phone</label> 
<input id="user_rails_settings_setting_object_phone" name="user[rails_settings_setting_object][phone]" type="text" value="55564333" /> 
<label for="user_rails_settings_setting_object_website">Website</label> 
<input id="user_rails_settings_setting_object_website" name="user[rails_settings_setting_object][website]" type="text" value="github.com" /> 
<input name="commit" type="submit" value="Save" /> 
</form> 

<form accept-charset="UTF-8" action="/account/settings" id="edit_user" method="post"> 
<div>...</div> 
<label for="user_rails_settings_setting_object_color">Color</label> 
<input id="user_rails_settings_setting_object_color" name="user[rails_settings_setting_object][color]" type="text" value="Green" /> 
<input name="commit" type="submit" value="Save" /> 
</form> 

내가 필요로하는 최종 결과이 같은 것입니다 : 두 가지 형태로 사용자가 [rails_settings_setting_object], 그래서 정확한 데이터를 얻을 수 내 컨트롤러를 사용할 수 없습니다, 이것은 HTML입니다

이 작업은 수동으로 수행 할 수 있지만 실제로 레일에서 가져올 수있는 방법이 있기를 바랍니다. 이 도움이

<%= form_for(:settings, url: edit_registration_path(resource_name), html: { method: :put }) do |form| %> 
    <%= form.fields_for :detail, current_user.settings(:detail) do |f| %> 
    <%= f.label :phone, 'Phone' %> 
    <%= f.text_field :phone %> 
    <%= f.label :website, 'Website' %> 
    <%= url_field :website %> 
    <% end %> 
    <%= form.submit "Save" %> 
<% end %> 
... 

희망 :

답변

2

나는 내가 단지 그것을 공유하고 싶은, 오래 전에 해결책을 발견!