Ruby on rails 如何显示单个列表?RubyonRails
我目前正在一个简单的网站上工作,人们可以在那里列出帖子。大部分代码都基于Michael Hartl的教程。 我希望用户能够单击单独显示列表的链接。 目前,每个用户的列表都位于Ruby on rails 如何显示单个列表?RubyonRails,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我目前正在一个简单的网站上工作,人们可以在那里列出帖子。大部分代码都基于Michael Hartl的教程。 我希望用户能够单击单独显示列表的链接。 目前,每个用户的列表都位于 http://localhost:3000/users/id 每个列表都有自己的id 这是我的路线 Rails.application.routes.draw do resources :users resources :sessions, only: [:new, :create, :destroy]
http://localhost:3000/users/id
每个列表都有自己的id
这是我的路线
Rails.application.routes.draw do
resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :listings
root 'static_pages#home'
match '/signup', to: 'users#new', via: 'get'
match '/signin', to: 'sessions#new', via: 'get'
match '/signout', to: 'sessions#destroy', via:'delete'
match '/help', to: 'static_pages#help', via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'
match '/new', to: 'listings#new', via: 'get'
这是我的清单_controller.rb
class ListingsController < ApplicationController
before_action :signed_in_user, only: [:create, :destroy, :edit]
before_action :correct_user, only: :destroy
def create
@listing = current_user.listings.build(listing_params)
if @listing.save
flash[:success] = "Job Post created"
redirect_to current_user
else
render 'listings/new'
end
end
def edit
end
def show
@listing = Listing.find(params[:id])
end
def new
@listing = Listing.new
@listings = Listing.paginate(page: params[:page])
end
def destroy
@listing.destroy
redirect_to current_user
end
private
def listing_params
params.require(:listing).permit(:description, :location, :title)
end
def correct_user
@listing = current_user.listings.find_by(id: params[:id])
redirect_to current_user if @listing.nil?
end
def current_listing
@listings = listing.find(params[:id])
end
end
class ListingsController
我还在listings文件夹下为每个列表创建了一个显示页面。
显示页面本身可以工作。
下面是清单的show.html.erb
<div class="show_listing">
<div class="col-md-6">
<div class="col-md-6">
<h3><%= @listing.title %></h3>
<h3><%= @listing.location %></h3>
<p><%= @listing.description %></p><br>
<div class="center">
<%= link_to "Apply Now", '#', class: "btn btn-info", data: {no_turbolink: true} %>
</div>
</div>
</div>
</div>
<div class="show_link_position">
<% if current_user == @listing.user %>
<%= link_to 'Edit', '#', class: "btn btn-link" %> |
<% end %>
<%= link_to 'Back', current_user, class: "btn btn-link" %>
</div>
|
现在,我想在用户页面(每个列表下)上有一个链接,分别链接到每个帖子
我在找这样的东西
多谢各位
如果您需要更多信息来从一个页面创建链接,该页面上的列表集合为
@listings
,请告诉我,您可能有以下内容
<ol class="listings">
<% @listings.each do |listing| %>
<div class="listing">
<h2><%= listing.title</h2>
<h3><%= listing.location</h3>
<p><%= listing.description</p>
<%= link_to "Show", listing, class: "btn btn-link" %>
</div>
<% end %>
</ol>
下面是我为使它工作所做的工作(借助下面的stackoverflow帖子,如何显示到单个MicroPost的链接?(RubyonRails3))
路线rb
match '/users/:id/:id', to 'listings#show', via: :get, as: :user_listing
用户查看文件
添加链接
<li><%= link_to "Show", user_listing_path(id: @user.id, id: listing.id) %></li>
这是个好主意,但我想链接到每个单独的列表。清单由标题位置和描述组成。我建议的代码将发出一个指向@listing集合中所有清单的链接“列表”。你试过我的建议了吗?我想创建一个链接(位于listings集合中显示show的每个列表下),单击该链接将打开一个新的show页面,仅显示一个特定列表。我尝试了你的建议,它创建了一个带有列表标题的链接列表,但这并不是我想要的。好吧。。。我只是尽量让答案简短,并把重点放在获取链接的基本问题上。我想你可以自己添加列表的其余部分。很抱歉,我没有那么快理解它,但我对Rails非常陌生。当我使用链接时,我得到以下错误:未定义的局部变量或方法'listing',我认为您有问题。这表明用户ID和列表ID是相同的???您通常会有类似于'/users/:user\u id/:id'
的内容,以便您的控制器可以分别在参数中找到它们。hm。。。我不确定。不过,它起作用了。用户Id和列表Id也不应该相同。有一个列表表和一个用户表。列表和用户都有自己的id。
def show
@user = User.find_by_id(params[:id])
@listing = Listing.find_by_id(params[:id])
end