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() %>