如果URL包含字符串?

我如何使用条件来做一件事:name被传递给_form而另一件事如果:name没有传递?

:name传递:

 Started GET "/inspirations/new?inspiration%5Bname%5D=Always+trust+yourself+more+than+you+doubt+yourself" for 127.0.0.1 at 2016-11-08 01:00:44 -0500 Processing by InspirationsController#new as HTML Parameters: {"inspiration"=>{"name"=>"Always trust yourself more than you doubt yourself"}} 

没有:name传递:

 Started GET "/inspirations/new" for 127.0.0.1 at 2016-11-08 01:16:18 -0500 Processing by InspirationsController#new as */* User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]] CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]] Inspiration Load (0.4ms) SELECT "inspirations".* FROM "inspirations" WHERE "inspirations"."id" IS NULL LIMIT 1 Rendered inspirations/_form.html.erb (4.1ms) Rendered inspirations/new.html.erb within layouts/modal (5.9ms) Completed 200 OK in 49ms (Views: 41.9ms | ActiveRecord: 0.7ms) 

_形成

    # Should Be Triggered If No :name Is Present in URL etc...   

例如,当URL包含字符串时:

http://www.livetochallenge.com/inspirations/new?inspiration%5Bname%5D=Life+would+be+easier+if+I+had+the+source+code.

但我经常使用URL缩短器。

不适合我:

  • 有没有办法检查URL的一部分是否包含某个字符串
  • 包括if语句中的url参数

试试这个:

 <%= simple_form_for(@inspiration) do |f| %> <%= f.text_area :name %> <% if params[:inspiration].try(:[], :name).nil? %> # Should Be Triggered If No :name Is Present in URL etc... <% end %> <% end %> 

这将检查:仅当后者存在时,参数[:灵感]内的名称。 所以,不应该发生错误。

您可以使用fetch避免错误。

 <%= simple_form_for(@inspiration) do |f| %> <%= f.text_area :name %> <%= f.text_area :name %> <% name = params.fetch(:inspiration, {}).fetch(:name, nil) %> <% if name.nil? %> etc... <% end %> <% end %>