将参数从视图传递到控制器
我有点新手问题。 我正试图将一个变量从我的视图传递给我的控制器。 无论如何我的控制器中的方法可以从我的视图中接收变量吗?
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(等)远程调用控制器函数。
这有帮助吗?