: 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 %>
...
희망 :