Я хочу создать текстовое поле, которое принимает ввод, и когда вы нажимаете кнопку рядом с ним, оно сохраняет эти изменения в базе данных.Это будет запрос PUT, обновляющий значение в базе данных для этого конкретного пользователя (не зарегистрированный пользователь, это страница для администраторов, чтобы обновить значения для пользователей).
Это должна быть структура, (код ниже):
1) Создайте текстовое поле и кнопку для этого в show.html.erb
2) Создайте функцию с именем set_wistia_project_ID
для этого в users_controller.rb
, установитекнопка, равная этой :action
3) Создайте вспомогательную функцию с именем set_project_id
в user.rb
, которая вызывается set_wistia_project_ID
, которая фактически обновляет базу данных.Я решил разделить его на две функции, потому что заметил, что многие Rails-проекты имеют тенденцию разделять и разбивать функциональность на контроллер и модель.
4) Отредактируйте мой routes.rb
, включив в него какой-нибудь странный код, который, если честно, понятия не имеет, что он на самом деле делает.Но без него все приложение падает на Heroku.Так что я оставляю это там.Найдено в сообщении StackOverflow.
Мой show.html.erb
:
<% provide(:title, @user.name) %>
<div class="row">
<aside class="col-md-4">
<section class="user_info">
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
<br>
<%= @user.email %>
<br>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages' %>
<%= f.label :wistia_project_id %>
<%= f.text_field :wistia_project_id, class: 'form-control' %>
<%= button_to "Save", :action => "set_wistia_project_ID", :method => :put, :form_class => "form-control" %>
</div>
</div>
</h1>
</section>
</aside>
</div>
Мой users_controller.rb
:
# Sets wistia_project_ID.
def set_wistia_project_ID
@user = User.find(params[:id])
@user.set_project_id
end
Мой user.rb
:
# Sets the wistia_project_ID.
def set_project_id
self.wistia_project_ID # HOW TO SET EQUAL TO INPUT?
end
My routes.rb
:
Rails.application.routes.draw do
root 'static_pages#home'
get 'password_resets/new'
get 'password_resets/edit'
get 'sessions/new'
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 do
member do
put 'set_wistia_project_ID'
end
end
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
end
Но проблема, с которой я сталкиваюсь, заключается в том, что при попытке перейти на show.html.erb
происходит сбой приложения Heroku: (
Причина:
F, [2019-06-25T19:53:20.706881 #8] FATAL -- : [b2ed08bb-de52-417f-9ba8-8ec85629dce8]
app/views/users/show.html.erb:30:
syntax error, unexpected end-of-input, expecting end
Но мне это выглядит нормально?