Ruby on rails Rails link_使用';获取';而不是';邮政';
在我看来,我有一个代码Ruby on rails Rails link_使用';获取';而不是';邮政';,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,在我看来,我有一个代码 <% topics.each do |t| %> <li><%= link_to "#{t.name}", {:controller => "pages", :action => "session_start", :topic_id => t.id} , :method => :post , :confirm => "Start a new QA session for '#{t.name}' ?" %>
<% topics.each do |t| %>
<li><%= link_to "#{t.name}", {:controller => "pages", :action => "session_start", :topic_id => t.id} , :method => :post , :confirm => "Start a new QA session for '#{t.name}' ?" %></li>
<% end %>
“pages”、:action=>“session_start”、:topic_id=>t.id}、:method=>:post、:confirm=>“为“#{t.name}”启动新的QA会话”%>
参数:topic_id作为get发送并附加到url,我希望它作为post body的一部分发送。我尝试了各种组合,甚至阅读了API文档的链接
我遗漏了什么?查看文档,有一个url\u选项
和html\u选项
散列;选项方法
必须属于url\u选项
散列,但在编写代码时,它属于html\u选项
散列。尝试在单个散列中移动所有选项(在您的示例中,您不需要html\u选项
hash):
“pages”、:action=>“session_start”、:topic_id=>t.id、:method=>:post、:confirm=>“为“{t.name}”启动新的QA会话”}%>
为什么不做以下事情:
<%= link_to "#{t.name}", pages_session_start_path(topic_id: t.id), method: :post, confirm: "Start a new QA session for '#{t.name}' ?" %>
实际上,您可以使用rake routes来检查要发布的路由。 您的路线应具有以下内容:
resources :pages do
member do
post 'session_start'
end
end
然后在你的链接中,你可以
<%= link_to "Hello", session_start_pages_path() %>
我认为get是默认方式。你可以用。button\u to,然后do a:method=>:POST我想要一个链接,而不是一个按钮。你可以用link\u to to来完成。很抱歉。/当我这样做时,所有内容(方法、主题和确认)都成为get请求的参数。你有没有收到任何错误,或者只是没有发布?顺便说一句,我之前有一个额外的}
,这是偶然的。如果我命名了路由并尝试了该代码,它将是相同的get请求。请确保您的路由设置为POST
没有帮助。还是一个get请求。
resources :pages do
member do
post 'session_start'
end
end
<%= link_to "Hello", session_start_pages_path() %>