2017-03-09 67 views
-1

我試圖在單個顯示頁面上顯示單個抓取的語句,但它不起作用。顯示操作不起作用

這是我的錯誤:(截圖)

enter image description here

下面是用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,在這裏我把節目鏈接,以及:

<% @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截圖.. 。

enter image description here


enter image description here


enter image description here


enter image description here

+0

你能告訴我什麼是在循環'link'變量的值? – ashvin

+0

@ashvin,不知道我是否正確理解你的問題。讓我知道如果我的回答沒有回答它...這是一個craigslist鏈接...讓我附上'craigslist.html.erb'的截圖。那裏的'show'動作會轉到上面問題中的屏幕截圖... – user273072545345

+0

@如果您問我在第二個屏幕截圖中將顯示動作懸停時所看到的內容...它以'http://localhost:3000/links/etc ...'...有幫助嗎? – user273072545345

回答

0

在你craigslist動作您

... 
... 
Link.new(:link_info => link.text, :date => @date[index].text).save 
... 
... 
0123創建

因此,在您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> 
+0

我收到一個奇怪的錯誤。在'2nd EDIT'下面有一個屏幕截圖... – user273072545345

+0

@ user27307254534534534543675765您需要在'links'文件夾下創建'show.html.erb'。 – ashvin

+0

錯誤是缺少模板。 – ashvin

0

更新代碼從您的scrrenshot,我明白了在link_path(link)craigslist.html.erb行號:3你傳遞的是網址。

您應該傳遞的LinkId,如果你想從URL鏈接,那麼你可以像

Link.find_by_text(params[:id]) 

如果文本是在表列。


Link.find_by_link_info(params[:id]) 
+0

'文本'不是鏈接表中的列...它是'link_info'和'日期' – user273072545345

+0

如果您有鏈接,您可以在鏈接路徑中傳遞鏈接的「id」嗎? – ashvin

+0

@不確定你的意思,但是當我在第二個屏幕截圖中看到show link時,它顯示'localhost:3000/links/THEN-THE-NAME-OF-THE-LINK ...,我注意到url ...包括它在'4th EDIT'屏幕截圖 – user273072545345