有人可以帮我做一个表格吗?我不断收到ActionView :: Template :: Error(#的未定义方法“ title”):
UrlsController
'''
class UrlsController < ApplicationController
def url_params
params.require(:url).permit(:title, :link)
end
def create
@url = Url.create!(url_params)
flash[:notice] = "#{@url.title} was successfully created."
@url.save
end
def new
@url = Url.new
end
def edit
@url = Url.find(params[:id])
end
def update
@url = Url.find params[:id]
@url.update_attributes!(url_params)
flash[:notice] = "#{@url.title} was successfully updated."
end
end
'''
new.html.erb
'''
<h2>Add A URL Reference</h2>
<%= form_for Url.new do |f| %>
<%= f.label :title %><br />
<%= f.text_field :title %>
<%= f.label :link %><br />
<%= f.text_field :link %>
<%= f.button :submit %>
<% end %>
'''
我建议您像这样重构代码。
您可以私下记下set_url以防止重复代码
class UrlsController < ApplicationController
before_action :set_url, only: [:show, :edit, :update, :destroy]
def new
@url = Url.new
end
def edit
end
def create
@url = Url.new(url_params)
if @url.save
flash[:success] = Your url was successfully published!]
redirect_to @url
else
render :new
end
end
def update
if @url.update(url_params)
flash[:success] = Your url was successfully updated!]
redirect_to @url
else
render :edit
end
end
private
def set_url
@url = Url.find(params[:id])
end
def url_params
params.require(:url).permit(:title, :link)
end
end
new.html.erb
<h1>New Form</h1>
<%= render 'form', url: @url%>
_form.html.erb
<%= form_for @url do |f| %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.label :link %>
<%= f.text_field :link%>
<%= f.submit %>
<% end %>
routes.rb
resources :urls
如果要使用devise进行身份验证,您将需要查看devise文档。