如何使用Url中的参数在控制器方法中使用它?

时间:2016-09-14 09:21:10

标签: ruby-on-rails

My Url

控制器方法

def status
  @st = params[:st_type].to_i
  @user_id = params[:user_id]
  @post_id = params[:pt_id]
  @a = Apply.find_by_user_id_and_post_id(@user_id, @post_id)
  @a.update_attributes(status: @st)
  flash[:success] = "Welcome to the Sample App!"
end

链接不传递post_id参数 - :

来自观点的链接

<%= link_to "Shortlist", status_applies_path(:user_id => @user.id, :pt_id => @post_id, :st_type => 1) %>

我正在尝试从url获取user_id和post_id并将其传递给我的控制器方法'def status'。它处理user_id和post_id以查找进一步更新属性的Apply id。 问题是我只能获取user_id而不能获取post_id。

3 个答案:

答案 0 :(得分:1)

问题是,如果URL帮助器中的值为 nil ,则会省略它

$ rails c
app.jedis_path(listing: 1)
=> "/jedis?listing=1"
app.jedis_path(listing: nil)
=> "/jedis"

所以你的语法是正确的,但是如果param以 nil 的方式获得帮助URL方法,那么它本身不会显示在URL中

答案 1 :(得分:0)

使用wherefirst

Apply.where(something_attr: @user_id, other_attr: @post_id).first

答案 2 :(得分:0)

它愚蠢的错字

您将params作为:post_id传递并将其作为params[:pt_id]将其更改为:

@post_id = params[:post_id]