我试图在单个展示页面上显示单个已删除的语句,但它无效。
这是我得到的错误:(截图)
这里是带有show动作的控制器:
class LinksController < ApplicationController
def index
@links = Link.all
end
def show
@link = Link.find(params[:id])
end
def craigslist_scrape
require 'open-uri'
url = "https://losangeles.craigslist.org/search/web"
page = Nokogiri::HTML(open(url))
@craigslist_info = page.css("ul.rows")
@link_info = page.css("li.result-row p.result-info a.result-title.hdrlnk")
@date = page.css("li.result-row p.result-info time.result-date")
@link_info.each_with_index do |link, index|
Link.new(:link_info => link.text, :date => @date[index].text).save
end
end
private
def set_link
@link = Link.find(params[:id])
end
def link_params
params.require(:link).permit(:link_info, :date)
end
链接模型:
class Link < ApplicationRecord
end
路线:
Rails.application.routes.draw do
root 'links#craigslist_scrape'
resources :links
end
craigslist.html.erb,我也放了show链接:
<% @link_info.each_with_index do |link, index| %>
<h2><%= "Title of the job: #{link.text}" %></h2>
<p><%= "Date: #{@date[index].text}" %></p>
<h6><%= link_to 'Show', link_path(link) %></h6>
<% end %>
show.html.erb:
<p>
<strong>Link:</strong>
<%= @link.link_info %>
</p>
<p>
<strong>Date:</strong>
<%= @link.date %>
</p>
附加craigslist_scrape.html.erb
...
答案 0 :(得分:0)
在您的craigslist
操作中,您可以通过
Link
...
...
Link.new(:link_info => link.text, :date => @date[index].text).save
...
...
因此,在show
行动中,您可以link_info
找到并在您的展示行动中找到:
def show
@link = Link.find_by(link_info: params[:id])
end
您需要更新craigslist.html.erb
<h6><%= link_to 'Show', link_path(link.text) %></h6>
答案 1 :(得分:0)
从你的scrrenshot,我理解link_path(link)
在craigslist.html.erb
行号码:3你正在传递网址。
您应该通过Id
Link
,如果您想从URL
获取链接,那么您可以这样做
Link.find_by_text(params[:id])
如果text是表格中的列。
Link.find_by_link_info(params[:id])