문제

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)

또한 사용 (편안한 경로 또는 조건 옵션) [http://api.rubyonrails.org/classes/actioncontroller/routing.html 경로를 만들 때, 확인하는 대신 request.post? 컨트롤러에서.

다른 팁

adminHelper를 통해 parse_role_data에 액세스하지 않아야합니까?

Update 1: 이것을 확인하십시오 http://www.johnyerhot.com/2008/01/10/rails-using-helpers-in-you-controller/

사용자에게 역할을 추가하기 위해 UI를 작성하려는 경우. 나는 당신이 이미 UsersController를 가지고 있다고 가정하므로 역할 모델과 RolesconTroller를 추가하는 것이 좋습니다. 당신의 경로에서 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

이것은 새로운 동작에 표시된 양식의 역할 Params 데이터를 취하고이 사용자를위한 새로운 역할 모델을 만듭니다. 바라건대 이것은 당신에게 좋은 출발점입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top