【发布时间】:2012-11-13 19:32:20
【问题描述】:
我有一个通过远程 => true 向数据库添加行的表单。然后我想将新数据附加到表中,但无法获得要呈现的正确视图。
到目前为止,它正在为新条目呈现整个 show.html.erb 页面,但我想布局一个最小版本以添加为 .有没有一种快速的方法来告诉我的控制器在插入数据库后要呈现什么视图?我想渲染我的部分名为 _newly_added.html.erb
我的控制器
def new
@task = Task.new
render :partial => "/tasks/newly_added", :locals => { :t => @task }
end
谢谢!!
编辑 我认为我需要的只是另一种“展示”视图。
我发现我需要改变的方法其实是这样的:
def create
@task = Task.new(params[:task])
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render json: @task, status: :created, location: @task }
else
format.html { render action: "new" }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
我只需要制作一个替代的显示视图,然后告诉它重定向到那个视图。
【问题讨论】:
-
您可以只拥有一行
tr的一部分并在其中渲染新对象。然后,您可以获取 Ajax 调用的响应数据并将生成的 html 放入表中。为此,请使用不带布局的 respond_to :js 并使用特定的部分
标签: ruby-on-rails ruby ajax controller