2009-03-02 11 views
1

私のRuby on Railsアプリケーションでは、次のものがあります。parse_role_dataどこに「ヘルパー」メソッドを置くのですか?

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

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

    end 
end 
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 

parse_role_dataが定義されていないというエラーが表示されます。私は間違って何をしていますか?

答えて

2

ヘルパーは、ほとんどの日付のリストの中からカレンダーのHTMLテーブルを作るような、複雑な出力に関連するタスクのために使用されています。 (RESTfulなルートか:条件オプション)を使用したにも

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

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

見て:関連するモデル、下記の可能な例では行くべきファイルを解析するようにビジネスルールに関連する何かのルートを作成する際に[http://api.rubyonrails.org/classes/ActionController/Routing.html]を、代わりにコントローラのrequest.post?を確認してください。

+0

Hmmm ...しかし私は管理者用のコントローラを持っていますが、管理用のモデルはありません。 – alamodey

+0

子クラスを持たないモデルを簡単に定義できます。 'クラス管理'。ファイルが存在しない場合は、modelsディレクトリに 'admin.rb'というファイルを作成してください。 – Luke

+0

これで、Admin:Class "のための未定義のメソッド' parse_role_data 'が得られました。 – alamodey

0

AdminHelperからparse_role_dataにアクセスするべきではありませんか?

アップデート1:チェックこの http://www.johnyerhot.com/2008/01/10/rails-using-helpers-in-you-controller/

+0

これは、ActionViewが提供する書式関連のヘルパーのような使い勝手の良いヒントですが、ビジネス・インテグリティ・コードは本当にモデルに属しています。 – Luke

0

ユーザーにロールを追加するためのUIを作成しようとしているかどうかを調べます。私はあなたが既にUsersControllerを持っていると仮定していますので、Roleモデルと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 
:あなたのような何かをしたい、あなたのRolesControllerで

/users/3/roles 

:これはあなたのようなルートを持ってできるようになります

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

:あなたのroutes.rbをであなたのような何かをしたいです

これは、新しいアクションで表示されるフォームからparamsデータを取得し、このユーザーの新しいロールモデルを作成します。うまくいけば、これはあなたのための良い出発点です。

+0

真実ですが、うまくいけば、彼が間違っていることが強調されます。あなたのコントローラーでヘルパーを使用したいのは、通常、あなたがモデルで十分ではないことを示すものです。 – jonnii

関連する問題