我正在构建一个允许用户创建旅行的应用程序。但是,出于某种原因,我不确定我是否真正利用了rails的功能,或者我在代码中是多余的。在下面的示例中,您将看到一个行程控制器,可以在其中创建行程然后显示行程。一切正常,我只想确保以最小的方式解决这个问题。
class TripsController < ApplicationController
def new
@user = User.find(session[:id])
@trip = Trip.new
end
def create
@trip = Trip.create(trip_params)
@user = User.find(session[:id])
redirect_to user_trip_path(@user.id, @trip.id)
end
def show
@trip = Trip.find(params[:id])
end
private
def trip_params
params.require(:trip).permit(:where, :when, :price_per_person)
end
end
答案 0 :(得分:0)
将其收紧,&#34;将行程范围限定为用户&#34;。
class TripsController < ApplicationController
before_filter :find_user
def new
@trip = @user.trips.build #assuming a User has many trips
end
def create
@trip = @user.trips.create(trip_params) #you may want to add an if else here to catch bad trips
redirect_to user_trip_path(@user.id, @trip.id)
end
def show
@trip = @user.trips.find(params[:id])
end
private
def trip_params
params.require(:trip).permit(:where, :when, :price_per_person)
end
def find_user
@user = User.find(session[:id]) # or current_user if you are using popular authentication gems
end
end
它也是关于可读性的,而不仅仅是更少的线条。