我尝试了很多但仍然失败了,我想在这里实现编辑和更新操作。 以下是我的代码
家庭控制器:
class HomeController < ApplicationController
def index
@inputs = Person.all
end
def new
@input = Person.new
end
def create
@input = Person.new(input_params)
respond_to do |x|
if @input.save
x.html {redirect_to :action => 'index'}
else
x.html {render :action => 'new'}
end
end
end
def show
@input = Person.find(params[:id])
end
def edit
@input = Person.find(params[:id])
end
def update
@input = Person.find(params[:id])
respond_to do |x|
if @input.update(input_params)
x.html {redirect_to :action => 'index'}
else
x.html {render :edit}
end
end
end
private
def input_params
params.require(:inputs).permit(:name, :weight, :height, :color, :age)
end
end
edit.html.erb
<h1>Editing Data</h1>
<%= render 'form' %>
<%= link_to 'Show', home_path %> |
<%= link_to 'Back', home_index_path %>
form.html.erb:
<%= form_for :@input do |person| %>
<div class="field">
<%= person.label :name %><br>
<%= person.text_field :name %>
</div>
<div class="field">
<%= person.label :weight %><br>
<%= person.number_field :weight %>
</div>
<div class="field">
<%= person.label :height %><br>
<%= person.number_field :height %>
</div>
<div class="field">
<%= person.label :color %><br>
<%= person.text_field :color %>
</div>
<div class="field">
<%= person.label :age %><br>
<%= person.number_field :age %>
</div>
<div class="actions">
<%= person.submit %>
</div>
<% end %>
路线是正确的,我可以引导我进入编辑页面,但是,它显示, first problem, edit with no data pops up
新更新
答案 0 :(得分:0)
您似乎没有将表单绑定到您的方法。
http://guides.rubyonrails.org/form_helpers.html#binding-a-form-to-an-object
给出了概述,但我建议您进行编辑:
<%= form_for @input do |f| %>
<%= render 'form', f: f %>
<%= f.submit "Update" %>
<% end %>
和你的部分 - 应该是_form.html.erb
<div class="field">
<p><label for = "input_name">Name</label>:
<%= f.text_field :name %>
</div>
等。现在假设您已正确设置路线,它将返回到您的更新方法。如果您不以rails期望的方式设置您的路线,那么您应该使用:
<%= form_for @article, url: **your_update_path** do |f| %>
在运行rake路由时,只需添加指向更新方法的路径路径。
答案 1 :(得分:0)
您应该使用form_for
代替form_tag
,
<%= form_for @input do |x| %>
...
然后(取决于@input实际上是什么!)
<%= x.text_field :age %>