我创建了一个新用户,其基本字段为用户名和密码。然后我重定向到另一个页面,允许用户完成他的个人资料。该页面看起来像这样。
好的,我先创建了用户。然后我重定向用户以完成他的个人资料。个人资料页面如下所示
<h1>User successfully created</h1>
<h3>Would you like to complete your profile now?</h3>
<%= render @profile %>
<%= render @address %>
<%= button_to 'Save',{
:controller => "users",
:action => "update",
:id => @user.id,
:profile => @profile,
:address => @address
}, :method => :put %>
上面的代码在控制器中执行更新操作。但是,我对@profile
和@address
对象的结果为零。我想button_to
对配置文件和地址部分没有影响。
地址部分如下
<%= form_for(@address) do |f| %>
<% if @address.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@address.errors.count, "error") %> prohibited this address from being saved:</h2>
<ul>
<% @address.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<fieldset>
<legend>Addresss</legend>
<div class="field">
<%= f.label :street_address %>
<%= f.text_field :street_address, :size => 40 %>
</div>
<div class="field">
<%= f.label :street_address_2 %>
<%= f.text_field :street_address_2, :size => 40 %>
</div>
<div class="field">
<%= f.label :city %>
<%= f.text_field :city, :size => 40 %>
</div>
<div class="field">
<%= f.label :state %>
<%= f.text_field :state, :size => 40 %>
</div>
<div class="field">
<%= f.label :zip_code %>
<%= f.text_field :zip_code, :size => 40 %>
</div>
<% end %>
如果有人能够帮助我,我将不胜感激。
答案 0 :(得分:2)
button_to
方法只创建一个按钮,用于调用控制器/转到另一个页面。
如果要允许用户修改字段,则需要使用表单。请阅读此guide on forms以获取更多信息,尤其是part 2对我的情况感兴趣。
修改:您需要在表单中提交一个提交按钮,而不是表单外的button_to
。如果你想同时提交两个部分,你需要一个大的表格和一个能够处理两个模型的数据的控制器。