Ruby on rails RubyonRails更新仍然失败
我尝试了很多事情,但仍然失败,我想在这里实现一个编辑和更新操作。 下面是我的代码 家庭控制器:Ruby on rails RubyonRails更新仍然失败,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我尝试了很多事情,但仍然失败,我想在这里实现一个编辑和更新操作。 下面是我的代码 家庭控制器: 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
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
class HomeControllerindex'}
其他的
x、 html{render:action=>new'}
结束
结束
结束
def秀
@输入=Person.find(参数[:id])
结束
定义编辑
@输入=Person.find(参数[:id])
结束
def更新
@输入=Person.find(参数[:id])
回应你做的事|
if@input.update(输入参数)
x、 html{redirect_to:action=>index'}
其他的
x、 html{呈现:编辑}
结束
结束
结束
私有的
def输入参数
参数要求(:输入)。允许(:姓名,:体重,:身高,:颜色,:年龄)
结束
结束
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 %>
路线是正确的,我可以引导我到编辑页面,但是,它显示,
新更新
看起来您没有将表单绑定到方法 提供了一个概述,但我建议您编辑以下内容:
<%= 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 routes时,只需添加指向更新方法的routes路径。您应该使用
form\u for
而不是form\u标签
<%= form_for @input do |x| %>
...
...
然后(取决于@input实际上是什么!)
您的问题在于路线。Rails是按惯例工作的,如果您遵循模式,“它只是工作”,如果您不这样做,那么您必须添加一些配置。我已经更新了我的答案。
<%= x.text_field :age %>