gpt4 book ai didi

ruby-on-rails - Hartl Rails 教程练习 2(第 10.1.1 章)re : partial for sign-up and update form

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:13 25 4
gpt4 key购买 nike

Hartl 的练习 2 Rails Tutorial chapter 10.1.1要求通过为用户表单创建部分来删除"new"和“编辑” View 。如练习中所述,较早的练习导致了我需要在部分中解决的差异。我希望这将是一个简单的修复。这是我的代码:

这是部分形式:

<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: @user %>

<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>

<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>

<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>

<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation, class: 'form-control' %>

<%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %>

像这样干掉这个 edit.html.erb,使用部分形式工作正常:

<% provide(:title, 'Edit user') %>
<% provide(:button_text, 'Save changes') %>
<h1>Update your profile</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= render 'form' %>
<div class="gravatar_edit">
<%= gravatar_for @user %>
<a href="http://gravatar.com/emails" target="_blank">Change</a>
</div>
</div>
</div>

这是我的 new.html.erb View ,它应该呈现部分表单以替换表单。差异在表单的开头,其中 form_for 的参数包括“@user”和“url: signup_path”:

<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>

<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@user, url: signup_path) do |f| %>
<%= render 'shared/error_messages' %>

<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>

<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>

<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>

<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>

<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>
</div>
</div>

然后,改进后的 DRYed View 应该是这样的,并进行了一些调整以处理差异。

<% provide(:title, 'Sign up') %>
<% provide(:button_text, 'Create my account') %>
<h1>Sign up</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= render 'form' %>
</div>
</div>

回到问题:如何编辑部分表格来处理这种差异?非常感谢您阅读并帮助这位 Rails 新手!

最佳答案

另一种选择是使用 new_record? 方法。

所以你的 form_for 应该是这样的:

<%= form_for( @user, url: @user.new_record? ? signup_path : user_update_path %>

Herenew_record? 的文档。

我喜欢将新记录用于简单的事情,例如更改 View 中的按钮文本。这是一个例子:

<%= submit_tag(object.new_record? ? 'Update' : 'Create' , class: 'nice') %>

关于ruby-on-rails - Hartl Rails 教程练习 2(第 10.1.1 章)re : partial for sign-up and update form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44207162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com