RoR:预填表格的问题

时间:2014-01-25 16:57:48

标签: ruby-on-rails ruby

我是RoR的新手并且有一点问题。

我有一张像

这样的表格
<td>Some Informations</td>
<td><a href="">Register me</a></td>

如果用户点击其中一个链接,他将转发到一个新表单,在那里他可以添加一些信息...这些表单预先填充了一些占位符数据,如

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

当填写完所有必需的信息后,每个方法都可以工作 - 但是如果用户忘记了一个字段,他应该返回带有一些错误信息的表单。

好吧,我有一些其他表格,一切正常,但在这种情况下,我的预填充字段出现了一些问题..

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

1 个答案:

答案 0 :(得分:0)

您似乎没有在控制器中定义@spot变量,而是要求它的参考字段。在控制器中的@spotshow函数中定义new,具体取决于您的表单所在的页面,它应该有效。