简体   繁体   English

Rails #show 页面只反映第一个种子 object 而不是所有种子对象?

[英]Rails #show page only reflecting first seeded object instead of all seeded objects?

I have a show page connected to my Rental object.我有一个显示页面连接到我的租赁 object。 When iterating over the Reviews which belong_to the Rental, it only returns the first Review object.在遍历属于租赁的评论时,它只返回第一个评论 object。 I have several Review objects connected to each Rental through my seed file, but can't seem to get all of them to reflect.我有几个 Review 对象通过我的种子文件连接到每个 Rental,但似乎无法让所有对象都反映。 Here are my files:这是我的文件:

rentals/show.html.erb出租/展示.html.erb


<h2> Rental Show Page </h2>

<div class="table-responsive">
<table class="table">
<tbody>
<tr>
<td> <strong> Street Address: </strong> </td>
<td> <%= @rental.street_add %> </td>
</tr>
<tr>
<td><strong> City: </strong></td>
<td><%= @rental.city %></td>
</tr>
<tr>
<td><strong> State: </strong></td>
<td><%= @rental.state %></td>
</tr>
<tr>
<td><strong> Owner: </strong></td>
<td><%= @rental.owner %></td>
</tr>
 </tbody>
</table>

<li><%= link_to 'Edit', rental_path(@rental) %> </li>
<li><%= button_to 'Delete', rental_path(@rental), method: :delete, data: {confirm: "Are you sure?"} %></li>
<li><%= link_to 'Home', rentals_path %></li>

<h1> Reviews </h1>
<% @rental.reviews.each do |reviews| %>
<%= link_to "#{@review.title}", rental_review_path(@rental), class: "btn btn-danger" %>
<% end %>



<h2>Add a review:</h2>
<%= link_to "Add a Review", new_rental_review_path(@rental), class: "btn btn-danger" %>

My Rentals Controller我的出租屋 Controller


class RentalsController < ApplicationController
 
    def index 
        @rentals = Rental.all
    end
    
    def show
        @review = Review.new
        @review = Review.find_by(id: params[:id])
        return if @rental = Rental.find_by(id: params[:id])
        redirect_to root_path, notice: "Rental is not available"
    end 

    def new
        @rental = Rental.new
    end

    def edit
        @rental = Rental.find_by(id: params[:id])
    end
    
    def create
        @rental = Rental.new(rental_params)
        if @rental.save
          redirect_to @rental, notice: "Your rental has been succesfully added."
        else 
            render :new
        end 
    end

    def update
        @rental = Rental.find_by(id: params[:id])
        @rental.update(rental_params)
        redirect_to @rental, notice: "Your rental has been succesfully updated."
    end
    
    def destroy
        @rental = Rental.find_by(id: params[:id])
        @rental.destroy
        redirect_to root_path
    end 
    
    
    private

    def rental_params
        params.require(:rental).permit(
            :street_add,
            :city,
            :state,
            :owner,
        )
    end

end

And my seeds file:还有我的种子文件:


Rental.create(street_add: "1428 Elm Street", city: "Springwood", state: "Ohio", owner: "Fred D. Krueger")

Rental.create(street_add: "112 Ocean Avenue", city: "Amityville", state: "NY", owner: "Butch DeFeo")

Rental.create(street_add: "8601 N Thorne Ln SW", city: "Lakewood", state: "WA", owner: "Kirtland Cutter")


User.create(username: "AAA", email: "test@test1.com", password: "123456")

User.create(username: "BBB", email: "test@test2.com", password: "1234567")

User.create(username: "CCC", email: "test@test3.com", password: "12345678")


Review.create(title: "Weird Dreams, Nice Lawn", body: "Open kitchen space, large green lawn. Had very strange dreams while living here.", rating: 3, rental_id: 1, user_id: 1)

Review.create(title: "Tenant Left Items", body: "Loved the master bedroom, but wasn't thrilled that the tenant left behind items.", rating: 2, rental_id: 2, user_id: 2)

Review.create(title: "Beautiful Furnished Basement", body: "Basement was fully furnished and was able to convert it into an office space. Loved the quiet neighborhood.", rating: 5, rental_id: 3, user_id: 3)


Review.create(title: "I loved it, husband didn't", body: "While I loved the quaint house, my husband was adamant that he didn't. (Something about voices). Great price for the location.", rating: 4, rental_id: 1, user_id: 1)

Review.create(title: "Very Cold", body: "The house was next to impossible to heat and was cold even in the summer. Heating costs were through the roof.", rating: 2, rental_id: 2, user_id: 2)

Review.create(title: "I loved it, husband didn't", body: "While I loved the quaint house, my husband was adamant that he didn't. (Something about voices). Great price for the location.", rating: 4, rental_id: 3, user_id: 3)


Review.create(title: "Sprawling Estate", body: "Plenty of space, landlord was very accomodating", rating: 5, rental_id: 1, user_id: 1)

Review.create(title: "Beautiful Trees in Backyard", body: "Beautiful trees in backyard although the owls made strange noises at night.", rating: 3, rental_id: 2, user_id: 2)

Review.create(title: "Stains Under All Rugs", body: "I noticed the rugs were placed oddly, and when lifted to clean the floors revealed large rust stains. We had someone out twice to clean them but they weren't able to be removed. Faucets produced rust colored water as well.", rating: 2, rental_id: 3, user_id: 3)

puts "data loaded success"

What I'm trying to accomplish is multiple reviews listed for each rental.我想要完成的是为每个租金列出多个评论。 Here is a screenshot of what I have for the rentals#show page vs the screenshot of all reviews:这是我的租金#show 页面的屏幕截图与所有评论的屏幕截图:

Rental Show Page Rental Index租赁展示页面租赁指数

Any help is very much appreciated!很感谢任何形式的帮助!

UPDATE: I was able to find the solution by updating the show page to reflect the link_to as such:更新:我能够通过更新显示页面以反映 link_to 来找到解决方案:

<h2> Rental Show Page </h2>

<div class="table-responsive">
<table class="table">
<tbody>
<tr>
<td> <strong> Street Address: </strong> </td>
<td> <%= @rental.street_add %> </td>
</tr>
<tr>
<td><strong> City: </strong></td>
<td><%= @rental.city %></td>
</tr>
<tr>
<td><strong> State: </strong></td>
<td><%= @rental.state %></td>
</tr>
<tr>
<td><strong> Owner: </strong></td>
<td><%= @rental.owner %></td>
</tr>
 </tbody>
</table>

<li><%= link_to 'Edit', rental_path(@rental) %> </li>
<li><%= button_to 'Delete', rental_path(@rental), method: :delete, data: {confirm: "Are you sure?"} %></li>
<li><%= link_to 'Home', rentals_path %></li>

<h1> Reviews </h1>
<% @rental.reviews.each do |reviews| %>
<li><%= link_to "#{reviews.title}", rental_review_path(@rental, reviews), class: "btn btn-danger" %></li>
<% end %> 

<h2>Add a review:</h2>
<%= link_to "Add a Review", new_rental_review_path(@rental), class: "btn btn-danger" %>

And updating the controller like this:并像这样更新 controller:


class RentalsController < ApplicationController
 
    def index 
        @rentals = Rental.all
    end
    
    def show
        @review = Review.find_by(id: params[:id])
        return if @rental = Rental.find_by(id: params[:id])
        redirect_to root_path, notice: "Rental is not available"
    end 

    def new
        @rental = Rental.new
    end

    def edit
        @rental = Rental.find_by(id: params[:id])
    end
    
    def create
        @rental = Rental.new(rental_params)
        if @rental.save
          redirect_to @rental, notice: "Your rental has been succesfully added."
        else 
            render :new
        end 
    end

    def update
        @rental = Rental.find_by(id: params[:id])
        @rental.update(rental_params)
        redirect_to @rental, notice: "Your rental has been succesfully updated."
    end
    
    def destroy
        @rental = Rental.find_by(id: params[:id])
        @rental.destroy
        redirect_to root_path
    end 
    
    
    private

    def rental_params
        params.require(:rental).permit(
            :street_add,
            :city,
            :state,
            :owner,
        )
    end

end

Thank you to everyone who answered!感谢所有回答的人!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM