Dan*_*ron 16 parameters ruby-on-rails
我正在尝试在我的第一个Rails应用程序(Rails 3)中做一些非常简单的事情,我不确定我做错了什么,或者是否有更好的方法.在网上找不到任何东西,或者在这里找不到任何东西,尽管经常搜索.
在应用程序中我有WorkRequests和文章.在查看文章时,我想要一个按钮来创建WorkRequest,并且当出现新的WorkRequest表单时,填写文章.实际上,我正在尝试将Article.id传递给新的WorkRequest.
仅通过添加参数在link_to中工作,但我希望它是一个按钮.虽然它在Article表单的HTML中显示为查询参数,但它永远不会到达WorkRequest.new方法.2010年的这篇文章详细解释了这个问题,但该解决方案对我不起作用(请参阅我在页面末尾的评论.)
这似乎应该是一个相当容易和常见的事情(一旦我弄明白,在我自己的应用程序中还有其他几个地方我想做同样的事情)但我一直在抨击这个特殊的东西墙几天了.我是Rails的新手 - 这是我的第一个应用程序 - 所以我希望有经验的人可以提供帮助!
提前致谢.
只是盘旋回来完成这个.最终我通过使用link_to解决了这个问题,但使用jQuery使其看起来像一个按钮.@kishie,如果你说你用button_to做了这个工作我想看看代码,但是因为我喜欢jQuery它已经解决了我所关心的(对于这个应用程序,无论如何.)
这是Article#show view中的代码.(该类通过jQuery使它看起来像一个按钮.)
<%= link_to "New Request", new_work_request_path(:article_id => @article.id), :class => "ui-button" %>
Run Code Online (Sandbox Code Playgroud)
这是Work_Request控制器的新方法中的代码:
if !params[:article_id].blank?
@work_request.article = Article.find(params[:article_id])
end
Run Code Online (Sandbox Code Playgroud)
然后,Work_Request#new视图正确呈现它.
在routes.rb文件中添加以下代码行.
resources :work_requests do
member do
post 'new'
end
end
Run Code Online (Sandbox Code Playgroud)
它不应该是GET方法,因为您通过:module_id向服务器发送信息.这将有效.
<%= button_to("Add WorkRequest", {:controller => "work_request", :action => "new", :article_id => @article.id})%>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17667 次 |
| 最近记录: |