Поскольку вы новичок, я объясню, как это работает.
Это не тот вопрос, на который должны ответить ответы на вопросы SO, но поскольку вы новичок, я напишу. Если вы хотите удалить Q или что-то еще, я не буду возражать.
-
Когда пользователь входит в систему, Форма заказа должна отображаться
Это user story.
Когда вы занимаетесь разработкой приложений, вы должны основывать все вокруг «истории» того, как пользователь попал туда, что они должны получить &, как он должен работать. Многие ссылаются на это как на «контекст».
Большой вопрос, который вы не адресовали, - , почему пользователю показана бланк заказа - для чего он нужен?
Чтобы ответить на ваш вопрос, вы смотрите на authentication.
Аутентификация в основном заключается в том, был ли пользователь зарегистрирован/зарегистрирован. Не путать с разрешением , то есть, имеет ли пользователь разрешение на выполнение действия.
Лучшая система аутентификации Rails - Devise. Вы можете увидеть учебник о том, как использовать его здесь: http://railscasts.com/episodes/209-introducing-devise
Вам нужны две модели, которые вы должны обрабатывать отдельно:
#app/models/user.rb
class User < ActiveRecord::Base
has_many :orders
end
#app/models/order.rb
class Order < ActiveRecord::Base
belongs_to :user
end
Это даст вам отправную точку, в которой вы сможете создать свои controllers
и views
.
-
Поскольку Rails предназначен для object orientated, все, что вы делаете, должно быть сосредоточено вокруг объекта вы имеете дело с.
Таким образом, вам нужно обрабатывать users
и orders
отдельно (IE при создании пользователя, они сразу же перейти к orders#new
действия):
#config/routes.rb
devise_for :users #-> url.com/users/sign_in
resources :orders #-> url.com/orders/new
выше, является resourceful routing, я дам вам узнайте, что это такое.
Что вам понадобится следующее:.
#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
resource.orders.count > 0 ? new_order_path : root_path
end
end
#app/controllers/orders_controller.rb
class OrdersController < ApplicationController
before_action :authenticate_user!
def new
@order = current_user.orders.new
end
def create
@order = current_user.orders.new order_params
@order.save
end
private
def order_params
params.require(:order).permit(:x, :y, :z)
end
end
Это переадресует пользователя на orders/new
действие после входа в систему Если они к нему доступ без проверки подлинности, они будут приняты к " логин/регистр ".
"Я новичок в Rails" - Добро пожаловать! Держитесь за это и делайте перерывы, если вы спускаетесь - вам нужно около 3 приложений, прежде чем вы начнете «получать». –
. Также было бы лучше указать какой-то контекст на ваш вопрос: почему пользователь будет видеть форму заказа ? Они покупают продукт, или это игра с внутриигровыми кредитами и т. Д.? –
хорошее чтение -> http://guides.rubyonrails.org/getting_started.html im тоже довольно новое. продолжайте читать и убедитесь, что вы понимаете. читать и кодировать. – mrvncaragay