我正在尝试使用表单<%= form_for @agent, :action => 'agents/update', :method => :put do |f| %>
进行编辑,但是当我点击保存更改时,表单将作为GET请求而不是PUT提交到update
操作。
我的resources :agents
文件中有routes.rb
。
在agents_controller.rb
中,显示和更新操作为:
def show
@agent = Agent.find(params[:id])
@subscription = @agent.subscription
end
def edit
@agent = Agent.find(params[:id])
@subscription = @agent.subscription
end
def update
@agent = Agent.find(params[:id])
@subscription = @agent.subscription
@agent.update_attributes(:agent)
end
当你无法获得标准的编辑表格时,这是非常令人沮丧的,任何帮助都会受到赞赏。
修改
agents/edit.html.erb
<%= form_for @agent do |f| %>
<ul>
<% for message in @agent.errors.full_messages %>
<li><%= message %></li>
<% end %>
</ul>
<div class="control-group">
<label class="control-label" style="width:200px;margin-right:20px"><strong>First name</strong></label>
<div class="controls">
<%= f.text_field :first_name, :placeholder => 'First name', :class => '', :style => '' %>
</div>
</div>
<div class="control-group">
<label class="control-label" style="width:200px;margin-right:20px"><strong>Last name</strong></label>
<div class="controls">
<%= f.text_field :last_name, :placeholder => 'Last name', :class => '', :style => '' %>
</div>
</div>
<div class="control-group">
<label class="control-label" style="width:200px;margin-right:20px"><strong>Email</strong></label>
<div class="controls">
<%= f.text_field :email, :placeholder => 'Your email', :class => '', :style => '' %>
</div>
</div>
<div class="control-group">
<label class="control-label" style="width:200px;margin-right:20px"><strong>Phone</strong></label>
<div class="controls">
<%= f.text_field :phone, :placeholder => 'Your phone number', :class => '', :style => '' %>
</div>
</div>
<div class="form-actions">
<%= f.submit "Save Changes", :class => 'btn btn-success' %>
<%= link_to 'Cancel', leads_path, :class => 'btn' %>
</div>
<% end %>
答案 0 :(得分:2)
您不应该为这样的简单表单提供方法或操作。一个简单的
<% form_for @agent do |f| %>
应该做你。你试过吗?页面上是否还有其他形式存在冲突?如果是这样,请先尝试删除其他表单,然后查看结果如何。
答案 1 :(得分:0)
修正了它。这篇文章涵盖了完全相同的问题:HTML <form> tag causing Rails form to submit a GET instead of POST request
GET请求是由rails表单周围的表单标签引起的,该表单标签用于添加twitter引导样式类“form-horizontal”。删除了额外的表单标签,它工作正常。