为什么Ruby on Rails没有正确生成“通知”HTML?

时间:2010-10-16 20:27:45

标签: ruby-on-rails notifications query-string

我认为嵌入式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

非常感谢!

3 个答案:

答案 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