将参数从视图传递到控制器

我有点新手问题。 我正试图将一个变量从我的视图传递给我的控制器。 无论如何我的控制器中的方法可以从我的视图中接收变量吗?

Post view: show.html.erb: ....  :add_relationship(@rela) %> 

 Controller: post.controller.rb: def add_relationship(rela) @post = Post.find(params[:id]) if current_user.id == @post.user_id @post.rel_current_id = rela.id @post.save redirect_to relationships_url else redirect_to posts_url, :notice => "FY!" end end 

提前致谢 :)

您可以通过link_to向params哈希添加信息。 我不确定你到底想要做什么,但我最近做了类似这样的事情,当我链接到新邮件时添加我想要的电子邮件类型

 <%= link_to 'Send Thanks', new_invoice_email_path(@invoice, :type => "thanks") %> 

现在我的params看起来像:

 {"type"=>"thanks", "action"=>"new", "controller"=>"emails", "invoice_id"=>"17"} 

我可以通过参数访问该类型

 email_type = params[:type] 

如果传入实例变量@rela而不是字符串,则将获得params哈希中的object_id。

根据下面的评论,我正在添加我的路线以显示路径new_invoice_email_path的工作原理:

 resources :invoices do resources :emails end 

当请求进入时,将首先处理控制器(和任何模型调用),然后最后处理视图代码。 视图可以调用助手中的方法,但不能在控制器中引用函数。

但是,一旦呈现页面,您可以将信息作为新请求的一部分发布回控制器,或者使用ajax / JQuery(等)远程调用控制器函数。

这有帮助吗?