我试图使用实例变量从控制器向视图发送字符串变量。问题是,当呈现视图时,发送的字符串变量将被剥离原始字符串中的所有空格。是否有一些ruby字符串的特殊属性或rails如何处理它们我缺少?
Ruby 2.0.0p481(2014-05-08修订版45883)[x86_64-linux]
Rails 4.0.5
def stringsub
forminput = params['mystring']
spaceinput = String.new(forminput)
puts "Displaying @formstring from controller: " + @formstring
@formstring = spaceinput
end
<!--HTML page view -->
<p><%= @formstring %></p>
Started POST "/pages/stringsub" for 127.0.0.1 at 2014-12-04 19:34:26 -0500 Processing by PagesController#stringsub as HTML Parameters: {"mystring"=>"this should have spaces"} Displaying @formstring from controller: this should have spaces Rendered pages/stringsub.html.erb within layouts/application (1.4ms) Completed 200 OK in 6ms (Views: 4.7ms | ActiveRecord: 0.0ms)
<!--HTML page view -->
<p>thisshouldhavespaces</p>
(注意在最终的HTML中删除了空格)
有没有办法保留发送的原始字符串中的空格?
问题是由该项目的组成员创建的方法,其方法将原始字符串作为参数传递给它,并使用.gsub从发送给它的参数中删除空格。
def groupmethod(start)
sub = start.split(" ")
count = (start.length - start.gsub!(/\s+/, "").length + 1) * 0.4
具有讽刺意味的是,我实际上能够通过使用String.new创建一个新变量并将其传递给方法来修复它
forminput = params['mystring']
@formstring = forminput
testvariable = String.new(forminput)
groupmethod(testvariable)
是否有更好或更正确的方法将变量传递给ruby方法并单独使用它们而不影响传递给方法的变量?
答案 0 :(得分:0)
您的stringsub
方法可以简化。我们假设您new
(简化版)中有UsersController
次操作:
def new
set_str
end
private
def set_str
@str = params['str']
puts "@str: #{@str}"
end
您的视图应该可以使用实例变量@str
。确保在应用程序的其他位置不修改实例变量给您带来麻烦。将保留单个空格,但如果要保留所有空格,可以使用.your-class { white-space: pre; }
另外(在您的原始方法中),我不知道puts
行如何(显然)在最后初始化@forminput
时输出任何内容。