我正在尝试在选择菜单上进行选择后更新模型。
例如,如果选择是'se',我想调用一个更新当前用户配置文件的方法。
继承我的观点:
<h1>Profiles#new</h1>
<p>Find me in app/views/profiles/new.html.erb</p>
<%= simple_form_for @profile do |f| %>
<%= f.input :bio %>
<%= select_tag id="postcode"name="Areas Covered">
<option value="se">Southeast London</option>
<option value="nw"> </option>
<option value="n"> </option>
<option value="s"> </option>
</select>
<br><br>
<%= f.button :submit %>
<% end %>
如果调用'se',我将调用“se_london”辅助方法:
module ProfilesHelper
def se_london
se = Place.where('area2 LIKE ? AND postal_code LIKE ?', '%London%', '%se%')
@profile.places << se
end
end
我正在尝试在当前用户配置文件上调用该方法,但无济于事:
class ProfilesController < ApplicationController
def new
@profile = Profile.new
end
def create
@profile = Profile.new(profile_params)
if @profile.save
if "value" == se
@profile.se_london
end
redirect_to '/'
else
redirect_to '/'
end
end
def update
end
def edit
end
def destroy
end
def index
@profile = Profile.all
end
def show
end
如果相关,则Place模型与Profile模型属于且有很多关系。
答案 0 :(得分:1)
最好了解如何使用select_tag
here。你可以这样做:
<%= label_tag :areas_covered, "Areas Covered" %>
<%= select_tag :areas_covered, options_for_select(['se', 'nw', 'n', 's']) %>
这会将选择放在params
哈希中params[:areas_covered]
。然后,从控制器,你可以做:
@profile.se_london if params[:areas_covered] == 'se'
就目前而言,在您的控制器中,您正在测试字符串“value”是否等于变量,或者是名为se
的方法的返回值,它甚至没有定义据我所知。该测试永远不会通过,甚至会抛出错误。