New和Create工作正常,数据存储在数据库中,但编辑和更新存在问题。
这是我的圣人控制器sages_controller.rb
class SagesController < ApplicationController
def home
end
def about
end
def new
@sage = Sage.new
end
def create
@sage= Sage.new(sage_params)
if @sage.save
flash[:success] = 'Thanks for Joining'
redirect_to '/thanks'
else
flash[:notice] = 'Please fill the form Correctly'
render 'new'
end
end
def edit
@sage=Sage.find(params[:id])
end
def update
@sage = Sage.find(params[:sage])
if @sage.update_attributes(sage_params)
redirect_to '/thankss'
else
render 'new'
end
end
def resources
end
private
def sage_params
params.require(:sage).permit(:Name, :Email, :Address, :Number)
end
end
这是我对新方法new.html.erb
<div class="contact" style="padding: 50px; color: orange ">
<%= form_for @sage do |f| %>
<div class="form-group" >
<h3><%= f.label :Name%></h3>
<%= f.text_field :Name %>
<br/>
</div>
<div class="form-group" >
<h3><%= f.label :Email%></h3>
<%= f.email_field :Email %>
</div>
<div class="form-group" >
<h3><%= f.label :Address%></h3>
<%= f.text_field :Address %>
<br/>
</div>
<div class="form-group" >
<h3> <%= f.label :Number%></h3>
<%= f.number_field :Number %>
<br/>
</div>
<br/>
<br/>
<div class="submit" >
<h2><%= f.submit 'SUBMIT'%></h2>
</div>
<% end %>
<%= link_to 'Edit', 'edit' %>
</div>
`
这是我对编辑方法edit.html.erb
<%= form_for @sage do |f| %>
<%= f.label :Name %>
<%= f.text_field :Name %>
<br/>
<%= f.label :Email %>
<%= f.text_field :Email %>
<br/>
<%= f.label :Address %>
<%= f.text_field :Address %>
<br/>
<%= f.label :Number %>
<%= f.text_field :Number %>
<br/>
<%= f.submit 'Update' %>
<% end %>
`
这是我在routes.rb中的路线
resources :sages,only: [:new,:create,:edit, :update]
get 'sages/home'=>'sages#home'
get 'sages/about'=>'sages#about'
get 'sages/resources'=>'sages#resources' `
答案 0 :(得分:2)
你做错了,如果记录不存在,你如何编辑呢?在new.html.erb
中,您添加了一个链接
<%= link_to 'Edit', 'edit' %>
删除该行,错误。您只能编辑现有记录而不能编辑新记录。此外,路线是错误的。它应该看起来像
<%= link_to 'Edit', edit_sage_path(@sage) %>
希望这有帮助!
答案 1 :(得分:1)
您使用的是哪个网址或路径?我想你使用的URL或路径不正确。
根据您提到的路线,您应该拥有以下访问路线进行编辑:
edit_sage GET /sages/:id/edit(.:format) sages#edit
因此,您使用edit_sage(id)
或使用/sages/id/edit
输入网址。请注意,您必须使用有效的id
圣人替换id
(在路径或网址中)。
在新视图中,您无法编辑不存在的对象(即未在数据库中保留)。
<%= link_to 'Edit', 'edit' %>
是其他用户提到的错误。
另外,如果您想要调用编辑,请考虑我在开头提到的内容。确保您传递了有效存在于数据库中的id
或sage object
。
答案 2 :(得分:1)
首先需要更改编辑链接,它应该是:
<%= link_to 'Edit', edit_sage_path(@sage) %>
您可以在新模板中调用编辑链接,因为在这种情况下,您的@sage为空(刚刚启动),您可以通过添加&#39;编辑&#39;来编辑您的圣人。链接到索引或显示模板
答案 3 :(得分:0)
update
动作更改
def update
@sage = Sage.find(params[:id])
if @sage.update_attributes(sage_params)
redirect to ('/thanks')
else
render 'new'
end
end
答案 4 :(得分:0)
如果你有$rootScope.$on('handleCreatedUser', function(event, args) {
alert('CreateUserResponseController : ' + args.message);
});
的记录,那就像一个例子,然后写一下像id = 2
这样的网址,你会得到记录为/sages/2/edit
的数据。
在下面执行此操作也会更改您的更新方法,
id=2
答案 5 :(得分:0)
我给出的链接在new.html.erb中编辑错误,将其删除 并将编辑路线更改为:
get 'sages/id/edit'=>'sages#edit' in routes.rb and now it works fine....