Ruby on rails 4 Rails 4:将自定义创建操作路由到两个不同的新操作
在我的控制器中,我创建了两个独立的Ruby on rails 4 Rails 4:将自定义创建操作路由到两个不同的新操作,ruby-on-rails-4,routing,Ruby On Rails 4,Routing,在我的控制器中,我创建了两个独立的新操作。一个是asknowd,另一个是offernew。我需要在创建它们时为每个设置一个值,因此我尝试为每个创建一个单独的create操作,在其中我可以设置两个不同的值 def newoffer @request = Request.new @request.requesttype = "offer" end def newask @request = Request.new @request.request
新操作。一个是asknowd
,另一个是offernew
。我需要在创建它们时为每个设置一个值,因此我尝试为每个创建一个单独的create
操作,在其中我可以设置两个不同的值
def newoffer
@request = Request.new
@request.requesttype = "offer"
end
def newask
@request = Request.new
@request.requesttype = "ask"
end
自定义创建操作:
def createask
@request = Request.new(request_params)
@request.requesttype = "ask"
respond_to do |format|
if @request.save
format.html { redirect_to @request, notice: 'Request was successfully created.' }
format.json { render :show, status: :created, location: @request }
else
format.html { render :new }
format.json { render json: @request.errors, status: :unprocessable_entity }
end
end
end
def createoffer
@request = Request.new(request_params)
@request.requesttype = "offer"
respond_to do |format|
if @request.save
format.html { redirect_to @request, notice: 'Request was successfully created.' }
format.json { render :show, status: :created, location: @request }
else
format.html { render :new }
format.json { render json: @request.errors, status: :unprocessable_entity }
end
end
end
所有操作都正常工作,但我不知道如何将新建
操作路由到各自的创建
操作。顺便问一下,在路由方面有哪些好的资源?这是我遇到的最大问题 为了避免单独的新建和创建操作来设置requesttype默认值,您可以通过url传入该值,并将其存储在隐藏的表单字段中:
链接:
link_to('New offer', new_request_path(requesttype: 'offer'))
link_to('New ask', new_request_path(requesttype: 'ask'))
def new
@request = Request.new(requesttype: params[:requesttype])
end
控制器:
link_to('New offer', new_request_path(requesttype: 'offer'))
link_to('New ask', new_request_path(requesttype: 'ask'))
def new
@request = Request.new(requesttype: params[:requesttype])
end
表格
form_for(@request) do |f|
f.hidden_field :requesttype
end
确保在模型层验证requesttype,以防有人弄乱URL
class Request < ActiveRecord::Base
validates_inclusion_of :requesttype, in: %w{ offer ask }
end
类请求
我不明白为什么你真的需要复制所有的代码来只产生一个差异……我想一定有更好的方法。谢谢我如何根据新视图中requesttype的值进行条件依赖,这样我就可以有一个像“new Offer”或“new Request”这样的头?