我认为嵌入式ruby代码是......
<p id="notice"><%= notice %></p>
但是当URL读取时......
http://0.0.0.0:3000/projects/3?notice=Project+was+successfully+created
生成的HTML是......
<p id="notice"></p>
我期待它阅读...
<p id="notice">Project was successfully created</p>
是什么给出的?
编辑:这是我的控制器代码,只是为了缓解任何好奇心。
def create
@project = Project.new(params[:project])
respond_to do |format|
if @project.save
format.html { redirect_to(:action => "show", :id => @project, :notice => 'Project was successfully created.') }
format.xml { render :xml => @project, :status => :created, :location => @project }
else
format.html { render :action => "new" }
format.xml { render :xml => @project.errors, :status => :unprocessable_entity }
end
end
end
非常感谢!
答案 0 :(得分:4)
我的体验与BeachRunnerJoe完全一样,并且在这里遇到了答案。由于我不喜欢,我做了一些自己的研究。我知道这个问题/答案已经超过一年了。尽管如此,我还是认为我会发布一个迟来的答案。
以下对我有用:
redirect_to( { :action => "show", :id => @project }, { :notice => 'Project was successfully created.' } )
redirect_to方法有两个参数: options 和* response_status *。如果没有额外的{},Ruby会将所有参数解释为属于 options ,因此在URL的选项中包含:notice hash。
希望这有帮助。
彼得
答案 1 :(得分:3)
尝试使用
之类的内容分配控制器中的值@notice_text = params[:notice]
然后你可以使用像
这样的东西<p id="notice><%= @notice_text %></p>
在你看来。
You may wish to read the answer to this question更明确地处理通过URL查询字符串传递变量。
答案 2 :(得分:1)
您的代码无效,因为“通知”便捷方法使用闪光灯,而您想要显示参数,而不是闪光灯。尝试而不是进行重定向并在params中分配通知,首先将通知分配给flash变量然后重定向。
if @project.save
flash[:notice] = 'Project was successfully created'
redirect_to project_path(@project)
end