Tôi đang học Ruby on Rails bằng cách sử dụng book này. Tôi bị kẹt trong bài tập thứ hai từ here.Biến đổi để sử dụng đường dẫn trong một phần
hình thức của tôi một phần app/views/users/_form.html.erb
trông như thế này:
<%= 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 %>
đăng ký của tôi xem app/views/users/new.html.erb
với một phần là thế này:
<% 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>
và chỉnh sửa của tôi xem app/views/users/edit.html.erb
là thế này:
<% 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>
Vấn đề của tôi là tôi không biết con đường phù hợp nào r chỉnh sửa chế độ xem Tôi phải đặt với cung cấp phương thức.
Với signup_path nó hoạt động tốt cho chế độ xem đăng ký. Những gì tôi đã cố gắng để sửa xem là:
user_path
(hiện trong ví dụ mã)edit_user_path
edit_user_path(@user)
(để vượt qua các đối tượng người dùng)
Dưới lỗi định tuyến hiện tại tôi got:
và dưới đây là các tuyến đường có sẵn liên quan đến người sử dụng:
Ví dụ nếu tôi không sử dụng cung cấp cho các điểm chỉnh sửa để cung cấp một địa chỉ, nó hoạt động tốt như ở đây:
<%= 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 %>
Nhưng mục đích là để cấu trúc lại mã bằng cách sử dụng partials, vì vậy tôi cần cung cấp url cho chế độ xem đăng ký.
Các 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
có thể giúp bạn gửi phần của 'routes.rb' nơi bạn đặt đường dẫn cho người dùng? – mrzasa
Bạn chỉ cần xem qua quy trình, Đường ray và biểu mẫu của chúng hoạt động như thế nào với bản ghi hoạt động. Hãy đi với việc tạo ra các bộ điều khiển giàn giáo với các mô hình. Bạn sẽ definalty học một cách nhanh chóng. –
đã thêm 'routes.rb' @mrzasa – ronatory