我想在我的index
视图中创建一个form_tag
,以接受传递给我的populateOne
方法的id
。视图已经正确更新,表单中的number_field_tag
和submit_tag
都在那里,但是当我按下服务器上的按钮时,什么都没有发生!
这是我的观点:
<%= form_tag('/affinities/populateOne/:id', method: :put) %>
<%= number_field_tag(1) %>
<%= submit_tag 'Populate One' %><br>
以下是我的路线:
put 'affinities/populateOne/:id' => 'affinities#populateOne', :as => 'populateOne_affinity'
我的populateOne
方法很长,所以这里是相关的部分:
def populateOne
userA = User.find(params[:id])
...
end
有什么问题吗?非常感谢所有的帮助!谢谢! !
您的form_tag
使用put
方法将数据发布到url。你的路线有get
方法。修复put
:
put 'affinities/populateOne/:id' => 'affinities#populateOne', :as => 'populateOne_affinity'
视图:<%= form_tag('/affinities/populateOne/:id', method: :put) %>
路线:get 'affinities/populateOne/:id' => 'affinities#populateOne', :as => 'populateOne_affinity'
你的表单提交方法和路由不匹配。你的形式是放,做你想做的事,但路线是试图得到不存在的东西。将路由的get
更改为put
,它应该可以正常工作。
在我的index
视图中,我忘记为form_tag
添加do ... end
:
<%= form_tag('/affinities/populateOne/:id', method: :put) do %>
<%= number_field_tag(1) %>
<%= submit_tag 'Populate One' %>
<% end %><br>