def create
@emppede = Emppede.new(params[:emppede])
respond_to do |format|
if @emppede.save
format.html { redirect_to :action => :index, :id => @emppede.ad }
format.json { render json: @emppede, status: :created, location: @emppede }
else
format.html { render action: "new", :id => @emppede.ad } *(....error)*
format.json { render json: @emppede.errors, status: :unprocessable_entity }
end
end
end
我必须在新方法中传递id。这里如果数据保存得当,则转到索引方法。但如果不是那么它应该是新的,但与params id。我怎么能通过渲染动作传递参数?这里我想做,但param id没有传递给新方法。我突然强调了这一点。 如果我做
format.html { redirect_to :action => :new, :id => @emppede.ad }
然后它不会给出错误消息...
我必须将用户ID传递给新方法,以便我可以通过表单传递并保存。
<div id="employm" style="display:none">
<%= f.text_field :ad, :value=> @id%>
</div>
但是当表单获取错误时它会呈现给新的但在这里我必须发送
@emppede.ad
中的ID。
我怎样才能做到这一点?
因为为了输入新方法,应该传递id
redirect_to :action => :new, :id => @id
答案 0 :(得分:7)
您在控制器操作中定义的所有实例变量都存在于视图中。
因此,如果您在控制器中定义@id = 11
,则可以使用<%= @id %>
在视图中访问它。
如果您想通过重定向执行此操作,您只需访问视图中的parameters
(或先在控制器中使用它们,然后使用上面的实例方法。
您发布的代码有点神秘,但渲染不会进入new
方法,只会在当前上下文中呈现new.html.erb
。因此,如果您在创建操作中声明了@id并呈现新的,则会让它出现。
当重定向到:action时,你必须将@id作为参数传递。
答案 1 :(得分:7)
渲染会查找“new.html”,它不会进入新方法。