我想构建一个可以创建和更新模型的表单。我有这个
<%= form_for @vote, :url => votes_path, :remote => true do |f| %>
<%= f.hidden_field :person_id, :value => @person.id %>
<%= f.text_field :score %>
<%= f.submit %>
<%= submit_tag 'Skip', :name => 'skip', :type => 'button' %>
<% end %>
在我的路线文件中,我有
resources :votes
但是当&#34; @ vote&#34;对象存在且具有ID,上述表单无法提交,给出错误
POST http://localhost:3000/votes 404 (Not Found)
以下是我的控制器设置方式,虽然我觉得在尝试提交时它甚至没有那么远......
class Vote < ApplicationRecord
belongs_to :person
belongs_to :user
def create
puts "vote params; #{vote_params}"
@vote = Vote.new(vote_params)
...
private
def vote_params
params.require(:vote).permit(:score, :person_id)
end
答案 0 :(得分:1)
如果要在模型vote
上同时允许创建和更新方法,则可以跳过使用url,form_for将自动检测REST调用。
<%= form_for @vote, :remote => true do |f| %>
<%= f.hidden_field :person_id, :value => @person.id %>
<%= f.text_field :score %>
<%= f.submit %>
<%= submit_tag 'Skip', :name => 'skip', :type => 'button' %>
<% end %>
现在要创建对象vote
,您需要进行POST调用,例如
POST http://localhost:3000/votes
要更新对象,您需要进行PUT / PATCH调用,例如
PUT http://localhost:3000/votes/:id