通过rails中的链接传递参数,是否可能?

时间:2014-07-17 11:25:28

标签: ruby-on-rails ruby

这个问题是关于Ruby on Rails的一个更大问题的一部分,即ruby在哪里以及如何遇到rails?我们如何在控制器和视图与模型之间进行交互。但具体而言。

我有一个link_to方法,我调用自定义方法。如何将参数传递给该方法?

例如

    %td= link_to "Reject", toggle_field_admin_entry_path(photo, "foo")

所以到目前为止我的理解表明'照片'是行动应该采取行动的对象,但'参数'可能是一个值,以便做这样的事情

def toggle_field(argument)
    if argument == "foo"
     do this to photo
    else
     do that to photo
    end    
  end

我们可以简单地将其作为字符串吗?或者它必须是哈希? 我对ruby方法有基本的了解,但我很难理解他们与rails中的视图的关系。

如果您需要进一步澄清,请不要嗤之以鼻,我想在这里学习。如果你觉得我是主题,我会编辑我的主题更多。

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

使用params

在观点中:

link_to "Reject", toggle_field_admin_entry_path(photo, { params: { bar: "foo",
                                                                   baz: "wtf" } })

行动中:

def toggle_field
  if params[:bar] == "foo"
   do this to photo
  elsif params[:baz] == "wtf"
   do that to photo
  end    
end

答案 1 :(得分:0)

使用更好的路由购买可以实现这一点,例如:

routes.rb文件

get 'some_controller/toggle_field_action/:arg1/:arg2' => 'some_controller#toggle_field_action'), as:'toggle_field_admin_entry'

查看文件

 %td= link_to "Reject", toggle_field_admin_entry_path(photo, arg1: "test", arg2: "test2")

您可以在控制器中接收操作:

params[:arg1]
params[:arg2]