这个问题是关于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中的视图的关系。
如果您需要进一步澄清,请不要嗤之以鼻,我想在这里学习。如果你觉得我是主题,我会编辑我的主题更多。
感谢您的时间。
答案 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]