2016-08-19 3 views
0

이전에이 질문을 올렸습니다 : Passing parameters on button click in Rails전달 된 매개 변수가 레일에서 읽히지 않습니다

그리고 대답은 잘 작동합니다. 그러나 전달 된 매개 변수는 book_now 메서드에서 전달되는 @event_option_id조차도 erb에서 호출 할 수 없습니다.

Parameters: {"event"=>"4", "event_option_id"=>"5"}로 내 서버 로그에 보여주는하지만 <%= @event_option_id %>를 사용하려고 할 때 다시 빈오고, 난 그냥 to_i로 시험 할 때, 그 0 대신 5을 보였다. 내 EventsController

이 방법이 있습니다

def book_now 
    @event_option_id = params[:event_option_id] 
end 

을 그리고 내 링크는 다음과 같이 매개 변수를 전달합니다 :

<%= link_to "Book This Event Now!", book_now_path(:event => @event.id, :event_option_id => e.id), :id => "book-now-button", :class => "button" %> 

은 내가에서 해당 값에 액세스 할 수 있도록이 @event_option_id을 통과하는 것을 시도하고있다 내 데이터베이스.

EventOption

price, description을 가지고 있으며, 그것은 고유 name, 나는 여러 가지 방법들에 액세스하려고 할 때, 나는 예를 들어, (NoMethodError: undefined method 'price' for nil:NilClass)를 얻을.

어떤 일이 벌어지고 있는지 알 수 있습니까?

+0

컨트롤러에서 값을 DB에 저장하고 있습니까? 그리고 그들이 실제로 구원 받았다는 것을 확인 했습니까? 매개 변수를 성공적으로 전달한다고해서 실제로 DB에 저장되는 것은 아닙니다. – HolyMoly

+0

나는 실제로, 나는 잘 모르겠다. 항목과 매개 변수는 이미 내 DB에 있습니다. 사용자가 드롭 다운에서 선택하면 앱이 해당 event_id를 가져 와서 div를 관련 모델의 옵션으로 채 웁니다. 위의 버튼을 눌러 예약 페이지로이 매개 변수를 보내면 이미있는 연결을 호출하면됩니다. 말이 돼? – GeekFitness

+0

이벤트 오브젝트가 이미 존재하는 event_option_id를 가지고 있다면 뷰에서'@ event.event_option_id'로 호출 해 보았습니까? – HolyMoly

답변

1

@event_option_id = params[:event_option_id]으로 인스턴스 변수에 event_option_id 매개 변수 값을 할당하면됩니다.

당신이 다음과 같이 event_option_id에 해당 EventOption 객체를 찾는 일을해야한다 :

컨트롤러 방법 코드의 조각
@event_option = EventOption.find(params[:event_option_id]) 

는, 뷰 <%= @event_option.price %>EventOption 객체의 가격을 표시합니다 .

+0

이것은 어리석은 질문 일지 모르지만 어떤 컨트롤러가 있어야합니까? 나는 'EventsController'와'EventOptionsController' 둘 다에서 해봤고'ActionView :: Template :: Error (nil : NilClass에 대해 정의되지 않은 메소드'price':'both '로부터'를 얻습니다. – GeekFitness

관련 문제