Где я могу разместить «вспомогательные» методы? - PullRequest
1 голос
/ 02 марта 2009

В моем приложении Ruby on Rails я получил:

class AdminController < ApplicationController
  def create
    if request.post? and params[:role_data]
      parse_role_data(params[:role_data])
    end

  end
end

, а также

module AdminHelper
  def parse_role_data(roledata)
    ...
  end
end

Тем не менее, я получаю сообщение об ошибке: 1007 * не определено. Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 02 марта 2009

Помощники в основном используются для сложных задач, связанных с выводом, таких как создание таблицы HTML для календаря из списка дат. Все, что связано с бизнес-правилами, например, анализ файла, должно идти в связанной модели, возможный пример ниже:

class Admin < ActiveRecord::Base
  def self.parse_role_data(roledata)
    ...
  end
end

#Call in your controller like this
Admin.parse_role_data(roledata)

Также обратите внимание на использование (RESTful маршруты или опция: условий) [http://api.rubyonrails.org/classes/ActionController/Routing.html] при создании маршрутов вместо проверки на request.post? в вашем контроллере.

0 голосов
/ 02 марта 2009

Судя по тому, пытаетесь ли вы создать пользовательский интерфейс для добавления ролей пользователям. Я собираюсь предположить, что у вас уже есть UsersController, поэтому я бы предложил добавить ролевую модель и RolesController. В вашем rout.rb вы бы сделали что-то вроде:

map.resources :users do |u|
    u.resources :roles
end

Это позволит вам иметь маршрут как:

/users/3/roles

В вашем RolesController вы бы сделали что-то вроде:

def create
    @user = User.find_by_username(params[:user_id])
    @role = @user.roles.build(params[:role])
    if @role.valid?
        @role.save!
        redirect_to @user
    else
        render :action => 'new'
    end
end

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

0 голосов
/ 02 марта 2009

Разве вы не должны получать доступ к parse_role_data через AdminHelper?

Обновление 1: отметьте это http://www.johnyerhot.com/2008/01/10/rails-using-helpers-in-you-controller/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...