编辑表单错误地提交为GET - Rails

时间:2013-06-24 21:47:08

标签: ruby-on-rails forms routing

我正在尝试使用表单<%= 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 %>

2 个答案:

答案 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-horizo​​ntal”。删除了额外的表单标签,它工作正常。