js調用ruby後台方法,ruby前端

本文目錄一覽:

如何在 js 文件里加入 rails 變量 · Ruby China

不行的,app/assets/javascript文件夾裏面放的應該是.js文件

你要想這麼做,你可以把那個rails的變量放在頁面中的一個隱藏域中

例如:

input type=”hidden” id=”user_name” value=”%= @user.name %”/

在js中就能取到這個@user.name的值

jquery 代碼如下

var user_name = $(“#user_name”).val();

開發應該有一個思想,js代碼歸js代碼,html歸html,ruby代碼歸ruby代碼

這樣看起來很舒服

ruby main.rb怎麼調用

在ruby編程中,()可以省略不要,要顯示連續的多個字符串時,可以用逗號隔開,例如print(“playcame”,”\'”,”afk”),這樣的語句在Ruby中也是合法的,另外,print語句還可以分行寫,效果與前兩種的調用方法是一樣的。

Ruby編程的三種調用方法

工具/原料

Ruby

步驟/方法

打開記事本或者文本編輯器,輸入,print “hello\nmy ruby\nmm\n”

Ruby編程的三種調用方法

點擊文件,另存為文件夾,保存在C盤下,路徑隨便,格式改為rb。

點擊開始,運行,命令提示符,輸入cd C:\Documents and Settings\Administrator\桌面\ruby(這個只是我保存的文件夾),按回車鍵

Ruby編程的三種調用方法

輸入ruby 1.rb,按回車鍵

Ruby編程的三種調用方法

可以看到,結果分為三行輸出,現在我們用第二種調用方法,再次打開記事本,輸入print(“hello”,”\n”,”my ruby”,”\n”,”mm”,”\n”)

Ruby編程的三種調用方法

結果顯示,這種調用方法也和前一種的效果一樣,現在,我們用另一種方法。再次打開記事本,輸入

print(“hello\n”)

print(“my ruby\n”)

print(“mm\n”)

Ruby編程的三種調用方法

將文件保存到文件夾里,格式改為rb,這裡我改為3.rb。

再次打開命令提示符,輸入ruby 3.rb,按回車鍵

Ruby編程的三種調用方法

這次可以很明顯的看到了,三次的輸出結果都是一模一樣的,但是卻用了三種不同的調用方法,也就是,這三種調用方法都是有效的且合法的。

如何用ruby調用另一個ruby腳本?

system(「.ruby」)或者load ‘another.rb’

具體代碼如下:

# 返回ls的輸出

s=`ls`

cmd= “ls”

s= `#{cmd}`

# 返回true or false

s= system(‘ls’)

cmd= ‘ls’

s= system(cmd)

#返回輸出

s= %x[uptime]

#用top進程替換當前ruby進程

exec “top”

cmd = ‘top’

exec cmd

AngularJS 怎麼用 jQuery · Ruby China

參考下面使用方法:

when(‘/’, templateUrl: ‘/assets/docatapp/templates/docs_view.html’, controller: @DocsViewController, resolve: @DocsViewController.resolve)

@DocsViewController.resolve =

redirect: ($route, $location) –

@path = $route.current.params.path

$location.url @path if @path?

data: ($q, $doCat, $route, $shared) –

deferred = $q.defer()

unless @path?

params = $route.current.params

page = if params.page then params.page else 1

per = $shared.per()

$doCat.doc.query {page: page, per: per}, (data) –

deferred.resolve(data)

deferred.promise

@DocsViewController = ($scope, $location, $routeParams, $shared, data) –

如何運行一個ruby類 中的方法

在Ruby中,有多種方法可以實現方法的動態調用。

1.

使用send方法

第一種實現動態方法調用是使用send方法,send方法在Object類中定義,方法的第一個參數是一個符號用來表示所要調用的方法,後面則是所調用方法需要的參數。

「This

is

a

dog1″.send(:length)

=

14

上面的代碼中通過send方法去對一個字符串執行length操作,返回字符串的長度。

class

TestClass

def

hello(*args)

」Hello

+

args.join(『

『)

end

end

a

=

TestClass.new

puts

a.send

:hello,

「This」,

「is」,

「a」,

「dog!」

執行結果為:

Hello

This

is

a

dog!

2.

使用Method類和UnboundMethod類

另一種實現動態方法調用是使用Object類的method方法,這個方法返回一個Method類的對象。我們可以使用call方法來執行方法調用。

test1

=

「This

is

a

dog1″.method(:length)

test1.call

=

14

class

Test

def

initialize(var)

@var

=

var

end

def

hello()

」Hello,

@var

=

#{@var}」

end

end

k

=

Test.new(10)

m

=

k.method(:hello)

m.call

#=

「Hello,

@iv

=

99″

l

=

Test.new(『Grant』)

m

=

l.method(「hello」)

m.call

#=

「Hello,

@iv

=

Fred」

可以在使用對象的任何地方使用method對象,當調用call方法時,參數所指明的方法會被執行,這種行為有些像C語言中的函數指針。你也可以把method對象作為一個迭代器使用。

def

square(a)

a*a

end

mObj

=

method(:square)

[1,

2,

3,

4].collect(mObj)

=

[1

4

9

16]

Method對象都是和某一特定對象綁定的,也就是說你需要通過某一對象使用Method對象。你也可以通過UnboundMethod類創建對象,然後再把它綁定到某個具體的對象中。如果UnboundMethod對象調用時尚未綁定,則會引發異常。

class

Double

def

get_value

2

*

@side

end

def

initialize(side)

@side

=

side

end

end

a

=

Double.instance_method(:get_value)

#返回一個UnboundMethod對象

s

=

Double.new(50)

b

=

a.bind(s)

puts

b.call

執行結果為:

100

看下面一個更具體的例子:

class

CommandInterpreter

def

do_2()

print

「This

is

2

」;

end

def

do_1()

print

「This

is

1

」;

end

def

do_4()

print

「This

is

4

」;

end

def

do_3()

print

「This

is

3

」;

end

Dispatcher

=

{

?2

=

instance_method(:do_2),

?1

=

instance_method(:do_1),

?4

=

instance_method(:do_4),

?3

=

instance_method(:do_3)

}

def

interpret(string)

string.each_byte

{|i|

Dispatcher[i].bind(self).call

}

end

end

interpreter

=

CommandInterpreter.new

interpreter.interpret(』1234′)

執行結果為:

This

is

1

This

is

2

This

is

3

This

is

4

3.

使用eval方法

我們還可以使用eval方法實現方法動態調用。eval方法在Kernel模塊中定義,有多種變體如class_eval,module_eval,instance_eval等。Eval方法將分析其後的字符串參數並把這個字符串參數作為Ruby代碼執行。

str

=

「Hello」

eval

「str

+

World!』」

=

Hello

World!

sentence

=

%q{「This

is

a

test!」.length}

eval

sentence

=

15

當我們在使用eval方法時,我們可以通過eval方法的第二個參數指明eval所運行代碼的上下文環境,這個參數可以是Binding類對象或Proc類對象。Binding類封裝了代碼在某一環境運行的上下文,可以供以後使用。

class

BindingTest

def

initialize(n)

@value

=

n

end

def

getBinding

return

binding()

#使用Kernel#binding方法返回一個Binding對象

end

end

obj1

=

BindingTest.new(10)

binding1

=

obj1.getBinding

obj2

=

BindingTest.new(「Binding

Test」)

binding2

=

obj2.getBinding

puts

eval(「@value」,

binding1)

#=

10

puts

eval(「@value」,

binding2)

#=

Binding

Test

puts

eval(「@value」)

#=

nil

可以看到上述代碼中,@value在binding1所指明的上下文環境中值為10,在binding2所指明的上下文環境中值為Binding

Test。當eval方法不提供binding參數時,在當前上下文環境中@value並未定義,值為nil。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/185566.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-26 12:24
下一篇 2024-11-26 12:24

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有着廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進制的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進制。 一、AES加密介紹 AE…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • 用法介紹Python集合update方法

    Python集合(set)update()方法是Python的一種集合操作方法,用於將多個集合合併為一個集合。本篇文章將從以下幾個方面進行詳細闡述: 一、參數的含義和用法 Pyth…

    編程 2025-04-29

發表回復

登錄後才能評論