質問

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

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

役に立ちましたか?

解決

ヘルパーは、日付のリストからカレンダーの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ルートまたは:conditionsオプション)[ http: //api.rubyonrails.org/classes/ActionController/Routing.html] は、ルートを作成するときに、コントローラーで request.post?をチェックする代わりに。

他のヒント

AdminHelperを介してparse_role_dataにアクセスしませんか?

更新1:これを確認してください   http://www.johnyerhot.com / 2008/01/10 / rails-using-helpers-in-you-controller /

ユーザーにロールを追加するためのUIを作成しようとしている場合の外観から。 UsersControllerが既にあると仮定するので、RoleモデルとRolesControllerを追加することをお勧めします。 routes.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

これにより、新しいアクションに表示されるフォームからロールパラメーターデータが取得され、このユーザーの新しいロールモデルが作成されます。うまくいけば、これはあなたにとって良い出発点です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top