2010-12-10 67 views
1

我在这里做错了什么?在RoR中链接到eval()的问题

这似乎在我的代码罚款早期的作品:

[email protected] do |img| 
      -link_to eval(params[:action] + '_image_path(img)') do 
      =image_tag img.image.url(:thumbnail) 

但是,这是行不通的。为什么不?

-link_to eval(params[:action] + '_image_path(@featured_image)') do 
    =image_tag @featured_image.image.url(:display) 

我看到“遗漏的类型错误:无法调用未定义的方法‘绑定’”似乎与调用_image_path(@featured_image)”的问题。 :(

+0

这似乎是一个可能的代码注入矢量。例如,如果我以某种方式设法使动作是'系统(“RM -rf〜')#',你已经失去了你的应用程序,即使没有,为了提高性能,一个更好的方法是'send(“#{action} _image_path”,img)' – Chuck 2010-12-10 22:50:53

+1

不知道这是如何回答我的问题..但谢谢。第一部分工作正常,代码的第二个片段没有。 – mtay 2010-12-11 00:15:45

回答

0

难道@featured_image是不确定的?这似乎是这里发生了什么。

+0

它不能被定义,因为= image_tag @ featured_image.image.url(:显示)在下一行是导致它正确显示。 – mtay 2010-12-11 00:14:41

+0

恐怕我失去了什么破的,然后 - 我会检查是否para ms [:action]或者你的_image_path路由是未定义的,在这种情况下 - 这听起来像你的一个变量是空的,但我的第一个猜测是它是'@ featured_image'。 – girasquid 2010-12-13 14:31:30