私はRuby on Railsをbookを使って学んでいます。 私はhereから2番目の練習に立ち往生しています。部分的にパスを使用する変数
app/views/users/_form.html.erb
部分私のフォームは次のようになります。部分と
<%= form_for(@user, url: yield(:path)) 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 %>
私のサインアップビューapp/views/users/new.html.erb
はこれです:
<% provide(:title, 'Sign up') %>
<% provide(:button_text, 'Create my account') %>
<% provide(:path, signup_path) %>
<h1>Sign Up</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= render 'form' %>
</div>
</div>
と私の編集ビューapp/views/users/edit.html.erb
はこれです:
<% provide(:title, "Edit user") %>
<% provide(:button_text, "Save changes") %>
<% provide(:url, user_path) %>
<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" rel="noopener noreferrer">Change</a>
</div>
</div>
</div>
私の問題は、どのような正しい経路がわからないということです。 r 編集ビュー私はと設定する必要がありますメソッドを設定します。
signup_pathサインアップビューで正常に動作します。私は、編集ビューの試みはある:(現在のコード例で)
user_path
edit_user_path
edit_user_path(@user)
現在のルーティングエラーI以下
(ユーザオブジェクトを渡します) got、ユーザに関連する利用可能なルートより下:
たとえば私は、URLを提供するために、編集ビューを提供し使用していない場合、それはここのように正常に動作します:
<%= 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 %>
しかし、目的はパーシャルを使用してコードをリファクタリングすることです、私はサインアップビューのためのURLを提供する必要があります。 routes.rb
:
Rails.application.routes.draw do
get 'sessions/new'
get 'users/new'
root 'static_pages#home'
get '/help', to: 'static_pages#help'
get '/about', to: 'static_pages#about'
get '/contact', to: 'static_pages#contact'
get '/signup', to: 'users#new'
post '/signup', to: 'users#create'
get '/login', to: 'sessions#new'
post '/login', to: 'sessions#create'
delete '/logout', to: 'sessions#destroy'
resources :users
end
あなたが一部を投稿することができあなたの 'routes.rb'のどこにあなたのパスを設定するのですか? – mrzasa
あなたはプロセスを見てみる必要があります。レールとそのフォームがアクティブなレコードでどのように動作するか。モデルを備えた足場コントローラを生成してください。あなたは間違いなくすぐに学びます。 –
は 'routes.rb' @mrzasa – ronatory