2015-07-12 49 views
1

有两个参数和我得到一个一个像导轨 - 的ActionController ::参数字符串

v = (params.require(:service).permit(:title)) 

这个V有这样{"title"=>"test,kil"}的值,我想获得右侧的一个值字符串,但都是徒劳的。 我试图强加的概念后,我将有@test= "test,kil"

Anyhelp将会很满。是Rails的新手。

+0

除非你想假装它是LISP,否则你可以在'(params.require(:service).permit(:title))'周围放置这些元素。 – max

回答

1

params in Rails只是一个哈希(好样的)。

要访问的Ruby的哈希值使用方括号语法:

v = params.require(:service).permit(:title) 
@test = v['title'] 

PARAMS在Rails的是一种叫做HashWithIndifferentAccess一个特殊的散列类型。所以我们可以做v['title']v[:title]

+0

普通红宝石哈希值是特定于某个键的类型的。例如'{“a”=> 2} [:a]'返回零。 – max

+0

更进一步,我将在每个“,”break后将@test分割成数组,然后我可以在循环中将它传递给Service.new(@test)吗? 即'@again = @ test.try(:split,“,”) @ again.each do | kil | Service.new(kil) end' – ijunaidfarooq

+0

我不确定你在问什么。它通常更好地[问一个新问题](http://stackoverflow.com/questions/ask),而不是评论与一堆跟原来的问题没有直接关系的问题。 – max

0

您只需做到以下几点:

@test = params.require(:service).permit(:title)[:title] 

def create 
    @qure = params.require(:service).permit(:level_id)[:level_id] 
    @test = params.require(:service).permit(:title)[:title] 
    @gain = @test.split(",") 

    # Note: You need to use a hash to pass args to the model 
    @gain.each do |fil| 
    Service.create!(title: fil, level_id: @qure) 
    end 

    redirect_to root_url 
end 

我也用创造!在该方法中,但如果要使用验证,则应考虑使用保存并检查返回值。如果存在验证问题,上述操作将引发错误。

+0

对不起,再问一次我可以将@test分割成数组,然后通过'Service.new(@test)'作为参数传递给它? – ijunaidfarooq

+0

是的,你可以用@ test.split(“,”)分开,这会给你一个数组。服务是一个活动的记录对象吗?你想在这里做什么? –

+0

服务是一种模式。我可以在循环中将它传递给Service.new(@test)吗?即@again = @ test.try(:split,“,”)@ again.each do | kil | Service.new(kil)end' – ijunaidfarooq