2016-01-14 3 views
0

Я пытаюсь создать две модели внутри одного контроллера. Я хочу создать новую страницу, которая будет регистрироваться пользователем. Когда пользователь входит в систему, должна отображаться форма заказа. На какой странице я должен создать эту форму заказа?Две модели с двумя формами в рубине на рельсах

Когда пользователь нажимает кнопку отправки на новой странице, вызывается метод create. Теперь мне нужно такое же действие, когда я нажимаю кнопку отправки в форме заказа. Где я должен создать эту форму? Может ли несколько форм присутствовать на новой странице? может кто-нибудь предложить мне ..

+0

"Я новичок в Rails" - Добро пожаловать! Держитесь за это и делайте перерывы, если вы спускаетесь - вам нужно около 3 приложений, прежде чем вы начнете «получать». –

+2

. Также было бы лучше указать какой-то контекст на ваш вопрос: почему пользователь будет видеть форму заказа ? Они покупают продукт, или это игра с внутриигровыми кредитами и т. Д.? –

+2

хорошее чтение -> http://guides.rubyonrails.org/getting_started.html im тоже довольно новое. продолжайте читать и убедитесь, что вы понимаете. читать и кодировать. – mrvncaragay

ответ

5

Поскольку вы новичок, я объясню, как это работает.

Это не тот вопрос, на который должны ответить ответы на вопросы 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 действие после входа в систему Если они к нему доступ без проверки подлинности, они будут приняты к " логин/регистр ".

Смежные вопросы