ruby-on-rails - 通过验证从另一个控制器视图创建
问题描述
我正在尝试从我的账单显示中创建代理。我不能在我的表单上显示验证错误,我只能闪烁它们。我尝试仅使用@agent
、 渲染而不是重定向、在表单中传递账单 id 来制作表单……但我不明白。如何创建代理并返回账单显示视图并在表单中显示我的验证错误?
控制器
bills_Controler.rb
def show
@bill = Bill.find(params[:id])
@agent = @bill.agent || Agent.new
respond_to do |format|
format.html
format.pdf do
render pdf: @bill.to_filename
end
format.zip { send_zip }
end
end
代理控制器.rb
def create
@agent = Agent.new
@bill=Bill.find(params[:bill_id])
if build_agent(agent_params).save
flash[:notice] = t('agent.saved')
redirect_to bill_path (params[:billid])
else
#flash[:error] = @agent.errors
#render 'bills/show'
redirect_to bill_path(@bill), :flash => { :error => @agent.errors.full_messages.join(', ') }
end
end
意见
_bill.html.erb
<%= render 'bills/show/agents'%>
_agents.html.erb
<%= simple_form_for [@bill, @agent] do |f| %>
<%= f.input :name, wrapper_html: { class: 'medium' } %>
<%= f.input :surname, wrapper_html: { class: 'medium' } %>
<%= f.input :phone_number, wrapper_html: { class: 'medium' } %>
<%= f.button :submit, class: 'button btn-main btn btn-primary'%>
<%end%>
楷模
账单.rb
belongs_to :agent, inverse_of: :bills
代理.rb
has_many :bills, inverse_of: :agents, dependent: :restrict_with_error
validates :name ,presence: true ....
路线
resources :bills, only: [:index, :show, :new, :create, :update] do
resources :agents, only: [:new, :update,:create]
end
解决方案
为了在字段中显示错误,您需要render
show
对包含错误的同一对象进行操作:
def show
# show action code goes here
end
def create
@agent = Agent.new(agent_params)
@bill = Bill.find(params[:bill_id])
if @agent.save
# validation fails and
# the @agent object contains errors
@bill.agent = @agent
flash[:notice] = t('agent.saved')
redirect_to bill_path(params[:bill_id])
else
render :new
# because the new action contains a form
end
end
推荐阅读
- discord.js - 这个 TypeError 正常吗?
- jupyter-notebook - ipywidgets 按钮的图标在 Google colab 中不起作用
- mysql - 我正在尝试创建一个 mysql 触发器,但不能,不知道错误是什么
- ruby-on-rails - 如何处理 Rails 中特定于环境的设置?
- gitlab - 如何在 GitLab CI 上的多项目管道中运行作业到作业的链接
- ios - 滑动单元格以从 Core Data 更改当前单元格内的值
- excel - 我可以在没有 VBA 的情况下连接数组的每个值吗?
- asp.net-core - 我可以强制 MVC-6-Grid 理解字段上的数据注释吗
- php - 从正则表达式中排除符号 [PHP]
- windows - Excel 2010 COUNTIF():您键入的公式包含错误