2015-10-19 43 views
1

我面臨以下錯誤信息軌道:application.html.erb其中線#6提出:類型錯誤:紅寶石上

ExecJS::ProgramError in Restaurantes#index Showing C:/rubyProject/vota_prato/app/views/layouts/application.html.erb where >line #6 raised:

TypeError: O objeto não dá suporte para a propriedade ou método Rails.root: C:/rubyProject/vota_prato

Application Trace | Framework Trace | Full Trace app/views/layouts/application.html.erb:6:in >`_app_views_layouts_application_html_erb__971963449_62998908' Request

我固定它除去線:從

true %>

我的應用程序/ views/layouts/application.html.erb文件

我做到了,我遇到了另一個問題=(。我在一個控制器上創建了一個動作破壞:

class RestaurantesController < ApplicationController 
    def destroy 
     @restaurante = Restaurante.find(params[:id]) 
     @restaurante.destroy 
     redirect_to(action: "index") 
    end 

    def index 
     @restaurantes = Restaurante.all 
    end 

    def show 
     @restaurante = Restaurante.find(params[:id]) 
    end 
end 

和我index.html.rb文件:

<h1>Listagem de Restaurantes</h1> 

<table> 
    <tr> 
    <th>ID</th> 
    <th>Nome</th> 
    <th>Endereço</th> 
    <th>Especialidade</th> 
    </tr> 

<% @restaurantes.each do |restaurante| %> 
    <tr> 
    <td><%= restaurante.id %></td> 
    <td><%= restaurante.nome %></td> 
    <td><%= restaurante.endereco %></td> 
    <td><%= restaurante.especialidade %></td> 
    <td><%= link_to 'Mostrar', action: 'show', id: restaurante %></td> 
    <td>--</td> 
    <td><%= link_to 'Deletar', {action: 'destroy', id: restaurante},{method: "delete"} %></td> 
    </tr> 
<% end %> 
</table> 

當Deletar鏈接點擊後,執行相同的動作顯示操作,我不知道爲什麼

回答

0

你有註釋掉線:

gem 'therubyracer', platforms: :ruby 

from your gemfile?做到這一點,運行「捆綁安裝」,然後重試。刪除方法依賴於一些Javascript。它可能是rubyracer或某些nodejs的東西,我不能重新調用它所調用的東西。

1

由於信息不足,無法分辨出您的JS問題。

至於鏈接的一部分,你的刪除鏈接應該是這樣的:

<%= link_to 'Deletar', restaurante_path(restaurante), method: :delete %> 

還要確保已包含在jquery-ujsapplication.js(這是瞭解你的鏈接和職位的method: :delete部分形式而不是一頁)

順便說一句,不要問一個在兩個問題。讓他們分開提問。

0

謝謝,它的工作原理,但我認爲它工作,因爲我安裝了nodeJS。我重新啓動我的電腦後,但是這兩種解決方案的工作

+0

呀會的NodeJS做的工作也很高興它爲你的作品! – polarcare

7

爲了解決這個問題ExecJS在Windows中,線5和的意見/佈局/ aplication.html.erb文件的6參數application更改爲default

的文件應該是這樣的:

<%= stylesheet_link_tag 'default', media: 'all', 'data-turbolinks-track' => true %> 
<%= javascript_include_tag 'default', 'data-turbolinks-track' => true %> 

這爲我工作。

3

首先,我對我的英語感到抱歉,如果它太糟糕... 這個錯誤發生在我幾個月前。紅寶石,導軌寶石或其他任何寶石都沒有問題。

這是我的規格:

  • 運行Windows 10
  • 使用RubyInstaller 3.2。0,包括包:
    • 紅寶石2.2.4
    • 的Rails 4.2
    • 捆紮機
    • 的Git
    • sqlite的
    • TinyTDS
    • SQL Server支持
    • 的devkit

insalling的RubyInstaller後,我創建了一個新的項目,但我有同樣的錯誤,如您:

ExecJS::ProgramError in home#index Showing C:/ruby_project/app/views/layouts/application.html.erb where line #6 raised: 
TypeError: Object doesn't support this property or method 

正定的解決方案是:

  1. 停止任何防護欄Web服務器。
  2. 關閉一切。
  3. 打開Web瀏覽器和衝浪的NodeJS上下載軟件包的網站,也可以從這裏下載: Download Link (Windows)
  4. 您的手術系統安裝的NodeJS。即使在64位上運行,也要安裝32位版本。
  5. 重新啓動您的計算機,打開命令行到您想要的項目,然後運行'rails server'。
  6. 完成...不需要更改app/views/layouts/application.html.erb上的任何內容。 它將工作 ...只是讓它默認爲:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>Sample</title> 
 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
 
    <%= csrf_meta_tags %> 
 
</head> 
 
<body> 
 

 
<%= yield %> 
 

 
</body> 
 
</html>

注:對於Linux/Mac用戶,只要安裝由RVM Ruby和Rails(Ruby的版本管理器) 。你不會有任何問題,我通過經驗告訴你。

對於在您的linux/mac終端上安裝RVM,我會向您推薦以下教程。我試過他們,他們工作!

請評論,如果這個工作對你或不...

問候。

+1

是的。我使用的是Rails 5.1.4,Ruby 2.3.3和Bundler 1.16.0。我的問題通過安裝nodejs解決。謝謝。 – Saurabhcdt

0

您需要安裝nodejs來融合turbolliks; )

按照鏈接:https://nodejs.org/en/download/

+0

你可能想擴大你的答案,說爲什麼節點需要編譯turbolinks來獲得jquery_ujs或rails_ujs刪除功能:) – BookOfGreg