Restaurant Load (1.5ms) SELECT * FROM "restaurants" INNER JOIN "restaurant_branches" ON "restaurant_branches"."restaurant_id" = "restaurants"."restaurant_id"
+----------+---------+---------+---------+----------+---------+----------+---------+---------+---------+---------+---------+---------+---------+---------+-------+
| resta... | res_... | res_... | crea... | updat... | user_id | resta... | addr... | addr... | addr... | addr... | addr... | addr... | numb... | numb... | email |
+----------+---------+---------+---------+----------+---------+----------+---------+---------+---------+---------+---------+---------+---------+---------+-------+
| 27 | DOGG... | WE S... | 2014... | 2014-... | 4 | 28 | 405 ... | | CHICAGO | IL | 60666 | USA | | | |
| 27 | DOGG... | WE S... | 2014... | 2014-... | 4 | 29 | 111 ... | | CHICAGO | IL | 60661 | USA | | | |
+----------+---------+---------+---------+----------+---------+----------+---------+---------+---------+---------+---------+---------+---------+---------+-------+
从我的rails控制台输出中可以看到,餐厅有两行记录。但是,有两个不同的地址。我如何在我的控制器的show
部分执行此操作,以便只将该特定行传递到我的show.html.erb
表单?
目前,这就是我的节目:
class RestaurantsController < ApplicationController
before_filter :authenticate_user!, except: [:index, :show]
def index
@restaurant = Restaurant.select('*').joins(:restaurant_branches)
end
def show
@restaurant = Restaurant.find(params[:id])
#@restaurant = Restaurant.select('*').joins(:restaurant_branches).find_by.restaurant_branch(params[:id])
end
def new
@restaurant = Restaurant.new
end
def create
if user_signed_in?
@restaurant = Restaurant.new(restaurant_params)
if @restaurant.save
redirect_to @restaurant
else
render 'new'
end
else
redirect_to new_owner_session_path
end
end
def edit
@restaurant = Restaurant.find(params[:id])
end
def update
@restaurant = Restaurant.find(params[:id])
if @restaurant.update_attributes(restaurant_params)
flash.now[:notice] = "You have successfully updated #{@restaurant.res_name.titleize}."
redirect_to @restaurant
else
render 'edit'
end
end
def destroy
@restaurant = Restaurant.find(params[:id])
@restaurant.destroy
flash.now[:notice] = "#{@restaurant.res_name.titleize} has been deleted!"
redirect_to restaurants_url
end
private
def restaurant_params
params.require(:restaurant).permit(:res_name, :res_description, restaurant_branches_attributes: [ :id, :address_line1, :address_line2, :address_line3, :address_line4, :address_line5, :address_line6, :number_phone, :number_fax, :email, :_destroy, pictures_attributes: [ :id, :name, :image, :_destroy] ] ).merge(user_id: current_user.id)
end
end
我尝试过像@restaurant = Restaurant.joins(:restaurant_branches).find(params[:id])
这样的事情但是没有找到任何运气。
感谢任何帮助。
答案 0 :(得分:0)
为什么不尝试通过restaurant_branch而不是id来查找记录?
def show
@restaurant = Restaurant.find_by_restaurant_branch(params[:id])
end