Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 和莱德曼导轨设置的表格_Ruby On Rails 4_Gem_Settings - Fatal编程技术网

Ruby on rails 4 和莱德曼导轨设置的表格

Ruby on rails 4 和莱德曼导轨设置的表格,ruby-on-rails-4,gem,settings,Ruby On Rails 4,Gem,Settings,我想制作一个表单,在这个问题中:,有一个解决方案,但它只适用于当前用户。设置(:电子邮件),我还有其他用户首选项:当前用户。设置(:详细信息)和当前用户。设置(:首选项) 如何将rails\u settings\u setting\u object更改为设置的确切名称?我现在有: <%= form_for(resource, as: resource_name, url: edit_registration_path(resource_name), html: { method: :put

我想制作一个表单,在这个问题中:,有一个解决方案,但它只适用于当前用户。设置(:电子邮件),我还有其他用户首选项:当前用户。设置(:详细信息)当前用户。设置(:首选项)

如何将rails\u settings\u setting\u 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 %>

它正在返回正确的详细信息和首选项(我将其设置为默认值),但我不知道如何将它们发送到控制器,而且两种形式的输入名称都是相同的用户[rails\u settings\u setting\u object],因此我无法使用我的控制器获取正确的数据,这是HTML:

<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>

...
电话
网站
...
颜色
我需要的最终结果如下:

<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>

...
电话
网站
...
颜色

我可以手动执行此操作,但我真的希望有一种方法可以从rails获得此解决方案。

我很久以前就创建了此解决方案,我只想与大家分享:

<%= 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 %>
...

...
希望这有帮助