2014-01-25 5 views
0

Я новичок в RoR и задаю вам небольшой вопрос.RoR: Проблемы с заранее заполненными формами

У меня есть таблица, как

<td>Some Informations</td> 
<td><a href="">Register me</a></td> 

Если пользователь нажимает на одну из этих ссылок, он будет перенаправлен на новую форму, где он может добавить некоторую информацию ... Эти формы IST укажи с некоторыми placeholder- данные, такие как

<input tye="input" placeholder"<%= @spot.reference %>"> 

Когда все необходимые сведения были заполнены, Everythings работает - но если пользователь забудет поле, он должен вернуться в форму с некоторыми информациями об ошибках.

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

undefined method `reference' for nil:NilClass 
Extracted source (around line #15): 
<input type="hidden" name="trip[reference]" value="<%= @spot.reference %>"> 

Что я должен сделать, чтобы гарантировать, что поля предварительно заполнены снова? Это мой код ...

class TripsController < ApplicationController 
    before_filter :authenticate_user! 

    def index 
    end 

    # show the givin trip 
    def show 
    @trip = Trip.find(params[:id]) 
    end 

    # show the new template 
    # the user can configurate his trip 
    def new 
    @trip = Trip.new 
    connect_google 
    end 

    def all 
    @trips = Trip.all 
    end 

    # create a new trip and set the current user as trip-admin 
    def create 
    @trip = Trip.new(trip_params.merge(admin: current_user.id)) 
    @trip.admin = current_user.id 
    if @trip.save 
     attach(@trip) 
     redirect_to @trip 
    else 
     connect_google 
     render 'new' 
    end 
    end 

    def attach(trip) 
    current_user.attend(trip) 
    end 

    private 
    def trip_params 
     params.require(:trip).permit(:reference, :hotel, :from, :to, :notice) 
    end 

    def connect_google 
     @googlePlaces = GooglePlaces::Client.new('API KEY') 
     @spot = @googlePlaces.spot(params[:id]) 
     rescue GooglePlaces::InvalidRequestError 
     #redirect_to '/' and return 
    end 
end 

ответ

0

кажется, что вы не определили @spot переменных в контроллере, для которого вы просите это поле ссылки. Определите @spot в вашей функции show или new в вашем контроллере в зависимости от того, на какой странице находится ваша форма, и она должна работать.

+0

Я определяю @spot в своем личном методе «connect_google». Это работает для моего «нового» метода, но не для моего «создания», и я не знаю, почему ... – Tobias

+0

Возможно, потому что, когда вызывается функция create, параметр ': id' не идет с ним при изменении маршрута. попробуйте сохранить последний использованный ': id' и используя этот идентификатор. –

+0

:/Спасибо :) – Tobias

Смежные вопросы