2015-01-24 2 views
0

У меня есть панель, содержащая 2 частичных файла. Одна частичная работа прекрасна и делает то, что предполагается (счет). Другая частичная настройка похожа на счет, но не работает (запрос). Когда я смотрю на свой журнал, он показывает, что запрашивается арендатор (пользователь), также запрашивается 1-й частичный запрос, но второй частичный запрос не запрашивается. когда я подошел к контроллеру панели управления и изменил экземпляр частичного (Request.new), он работает, но я не могу заставить его работать прямо через контроллер. Я не хочу иметь метод в модели. Я использую мангоид.undefined method `model_name 'для # <Пользователь: XXXXXXXX>

Так вот моя визуализация в приборной панели ...

 <%= render partial: "request", locals: {request: @request} %> 

В парциальном у меня есть ...

<%= form_for [:tenants, request] do |f| %> 

А на контроллере приборной панели у меня есть ...

def show 
    @dashboard = current_tenant 
    @bill = current_tenant.bill || current_tenant.build_bill 
    @request = current_tenant.request || current_tenant.build_request 
    end 

(если я изменю @request = Request.new, он отлично работает, но я знаю, что это неправильно)

Законопроект частичных работы и приборная панель находит арендатор, но я получаю

«неопределенного метод` запроса»для #

Любой идею о том, что мне не хватает? Я сравнил контроллер счета с контроллером запроса, и я не могу найти никаких различий. Когда я помещаю Model.new в контроллер панели управления, он работает, но я знаю, что это не так, как будто приложение не распознает контроллер запроса ...

Ошибка говорит, что он не распознает запрос "метод.

Кроме того, здесь мой контроллер для запроса ...

class Tenants::RequestsController < ApplicationController 
    before_filter :authenticate_tenant! 

    def index 
    @requests = Request.all 
    end 

    def show 
    @request = Request.find(params[:id]) 
    end 

    def create 
    if @request = current_tenant.create_request(authorization_params) 
     redirect_to tenants_dashboard_path, :notice => "#{request.manager_name} has been Authorized!" 
    else 
     redirect_to tenants_dashboard_path, :error => "#{request.manager_name} has NOT been Authorized, please try again." 
    end 
    end 

    def edit 
    end 

    def update 
    if current_tenant.request.update_attributes(authorization_params) 
     redirect_to tenants_dashboard_path, :notice => "You have approved #{request.manager_name} to review your report" 
    else 
     redirect_to tenants_dashboard_path, :notice => "#{request.manager_name} is NOT allowed to review your report" 
    end 
    end 

    def destroy 
    @request = Request.find(params[:request_id]) 
    name = @request.name 

    if @request.destroy 
     flash[:notice] = "\"#{name}\" was successfully removed from your profile." 
     redirect_to @dashboard 
    else 
     flash[:error] = "There was an error deleting this managers access." 
     render :show 
    end 
    end 
+0

Путать, с каким контроллером является какой. Можете ли вы пометить свои фрагменты кода лучше? Вы говорите, что 'current_tenant.request' не определено? Таким образом, запрос не является методом, доступным для current_tenant? – Clam

+0

Я уточню с правлением – SupremeA

+0

просто fyi, ваш другой контроллер не имеет значения, насколько я могу видеть. Ваша модель запроса была бы более актуальной. – Clam

ответ

1

Ну это выглядит как

current_tenant.request имеет проблемы. Это означает, что метод недоступен. Предполагая, что вы не пытаетесь получить доступ к http request, у вас возникла проблема с методом запроса.

Итак, ваша проблема связана с тем, как вы определили метод запроса (возможно, в вашей модели). например это метод класса или метод экземпляра и т. д.

Не зная своей цели, это общий ответ, который я могу вам дать. Создание Request.new может быть правильным в зависимости от вашей цели, но если ваша цель - вызвать метод запроса, вы должны сделать его доступным для current_tenant

Один контроллер не должен вызывать ваш другой контроллер, как вы предложили ...

+0

Нет 1 контроллер не вызывает другого. Я просто имел в виду, что он похож на модель запроса, и он работает еще с запросом.Конечная цель состоит в том, чтобы это частичное разрешить арендатору/пользователю предоставлять менеджеру/пользователю доступ к файлу. И я думал, что Request.new не должен входить в представление, он должен иметь доступ к контроллеру – SupremeA

+0

'Request.new' не должен идти в вашем представлении, но он может быть в вашем контроллере – Clam

+0

он может идти контроллер панели управления? потому что это делает работу страницы. – SupremeA

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